这个文案有点粗(字体有点粗,不要会错意嚎),不要这个粗,要比较纤细的那种粗!iOS没有这么粗啊

2023-12-06 00:40

本文主要是介绍这个文案有点粗(字体有点粗,不要会错意嚎),不要这个粗,要比较纤细的那种粗!iOS没有这么粗啊,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一段对话作为开场:

设计师: 这个文案有点粗(字体有点粗,不要会错意嚎),不要这个粗,要比较纤细的那种粗!

开发:

设计师: 就是看起来比较纤细的那种粗!

开发:

设计师: 比如…

开发: android:textStyle="bold"这就是粗体,就这一种可设置粗,不好看吗?

设计师: 为什么加粗会这么粗,iOS没有这么粗啊,不要这么粗,要纤细的那种粗!比较纤细的那种粗!…

开发: !@#¥%……&*()~~~~~~~内心很彷徨,内心有点小绝望,这个怎么给他说明白呢?


以上是开发和设计师的一段,开发给了一个粗,设计师要另外一个粗,此粗非彼粗啊。。。

听到问题后,我主动来调解下。

首先在英文环境下,android和ios表现的一样优秀,在中文情况下就差强人意了。

为什么会比iOS的粗,因为是系统字体不一样的原因,iOS 用的是Helvetica,4.0之前是 Droid Sans Fallback字体,Android 4.0 之后西文字体升级为 Roboto,其字体本身就设计加粗效果就是这么粗。就没有办法了吗?有的

  • 可以换字体,比如light字体。但是不支持局部的加粗,不满足某些条件,比较难办,况且加字体这事,android上请慎重……
  • 第二种,也是目前采用的方案,继承CharacterStyle,实现updateDrawState方法,设置tp.setFakeBoldText(true);是一种伪粗体效果,比原字体加粗的效果弱一点。当然这里还可以有第三种办法就是tp.setStyle(Paint.Style.FILL_AND_STROKE); tp.setStrokeWidth(2);设置1-5控制字体加粗的程度,可以控制是否实心什么的,自己尝试去做更多的效果吧

先来个效果图:

在这里插入图片描述

实现

1. 自定义textview类

public class SlightlyBoldTextView extends android.support.v7.widget.AppCompatTextView {public SlightlyBoldTextView(Context context) {super(context);setSlightBoldStyle();}public SlightlyBoldTextView(Context context, AttributeSet attrs) {super(context, attrs);
//        attrs.getAttributeIntValue();setSlightBoldStyle();}public SlightlyBoldTextView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);setSlightBoldStyle();}private void setSlightBoldStyle(){Log.i("bold","setSlightBoldStyle...");SpannableString str = new SpannableString(getText().toString());str.setSpan(new SlightlyBoldSpan(),0,getText().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);setText(str);}public class SlightlyBoldSpan extends CharacterStyle {@Overridepublic void updateDrawState(TextPaint tp) {/** 以下两种方法选其一 */// firsttp.setFakeBoldText(true);// secondtp.setStyle(Paint.Style.FILL_AND_STROKE);tp.setStrokeWidth(10);//控制字体加粗的程度}}
}
2. 在layout/xml中加入自定义textview(或者忽略此步直接第三步中findViewById改为创建一个TextView对象即可)

<你的包名.SlightlyBoldTextViewandroid:id="@+id/tvBoldSlightBold"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:textSize="20sp"android:text="字体效果-boldsmall"/>
3. 给TextView设置spannable达到bold效果

TextView tvBoldSmall = findViewById(R.id.tvBoldSmall);SpannableString str = new SpannableString(tvBoldSmall.getText().toString());
str.setSpan(new FakeBoldSpan(),0,tvBoldSmall.getText().length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tvBoldSmall.setText(str);

ok,基本实现。欢迎拍砖。

TAG:Android TextView Spannable String CharacterStyle

这篇关于这个文案有点粗(字体有点粗,不要会错意嚎),不要这个粗,要比较纤细的那种粗!iOS没有这么粗啊的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/459767

相关文章

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

豆包 MarsCode 不允许你还没有女朋友

在这个喧嚣的世界里,爱意需要被温柔地唤醒。为心爱的她制作每日一句小工具,就像是一场永不落幕的浪漫仪式,每天都在她的心田播撒爱的种子,让她的每一天都充满甜蜜与期待。 背景 在这个瞬息万变的时代,我们都在寻找那些能让我们慢下来,感受生活美好的瞬间。为了让这份浪漫持久而深刻,我们决定为女朋友定制一个每日一句小工具。这个工具会在她意想不到的时刻,为她呈现一句充满爱意的话语,让她的每一天都充满惊喜和感动

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

关键字synchronized、volatile的比较

关键字volatile是线程同步的轻量级实现,所以volatile性能肯定比synchronized要好,并且volatile只能修饰于变量,而synchronized可以修饰方法,以及代码块。随着JDK新版本的发布,synchronized关键字的执行效率上得到很大提升,在开发中使用synchronized关键字的比率还是比较大的。多线程访问volatile不会发生阻塞,而synchronize

STL经典案例(四)——实验室预约综合管理系统(项目涉及知识点很全面,内容有点多,耐心看完会有收获的!)

项目干货满满,内容有点过多,看起来可能会有点卡。系统提示读完超过俩小时,建议分多篇发布,我觉得分篇就不完整了,失去了这个项目的灵魂 一、需求分析 高校实验室预约管理系统包括三种不同身份:管理员、实验室教师、学生 管理员:给学生和实验室教师创建账号并分发 实验室教师:审核学生的预约申请 学生:申请使用实验室 高校实验室包括:超景深实验室(可容纳10人)、大数据实验室(可容纳20人)、物联网实验

安装SQL2005后SQL Server Management Studio 没有出来的解决方案

一种情况,在安装 sqlServer2005 时 居然出现两个警告: 1 Com+ 目录要求 2 Edition change check 郁闷!网上说出现两个警告,是肯定装不成功的!我抱着侥幸的态度试了下,成功了。 安装成功后,正准备 “ 仅工具、联机丛书和示例(T)” 但是安装不了,他提示我“工作站组件”安装过了对现有组件无法更新或升级。 解决办法: 1 打开“控

最近心情有点复杂:论心态

一月一次的彷徨又占据了整个身心;彷徨源至不自信;而不自信则是感觉自己的价值没有很好的实现亦或者说是自己不认可自己的目前的生活和状态吧。 我始终相信一句话:任何人的生活形态完全是由自己决定的;外在的总归不能直达一个人的内心深处。所以少年 为了自己想要的生活 多坚持努力吧、不为别人只为自己心中的那一丝执着。 由此我看到了一个故事: 一个心情烦躁的人去拜访禅师。他问禅师:我这辈子就这么注定了吗?您

模具要不要建设3D打印中心

随着3D打印技术的日益成熟与广泛应用,模具企业迎来了自建3D打印中心的热潮。这一举措不仅为企业带来了前所未有的发展机遇,同时也伴随着一系列需要克服的挑战,如何看待企业引进增材制造,小编为您全面分析。 机遇篇: 加速产品创新:3D打印技术如同一把钥匙,为模具企业解锁了快速迭代产品设计的可能。企业能够迅速将创意转化为实体模型,缩短产品从设计到市场的周期,抢占市场先机。 强化定制化服务:面

stl的sort和手写快排的运行效率哪个比较高?

STL的sort必然要比你自己写的快排要快,因为你自己手写一个这么复杂的sort,那就太闲了。STL的sort是尽量让复杂度维持在O(N log N)的,因此就有了各种的Hybrid sort algorithm。 题主你提到的先quicksort到一定深度之后就转为heapsort,这种是introsort。 每种STL实现使用的算法各有不同,GNU Standard C++ Lib