27
2017
09

TextView下划线的添加,控制下划线和文字的距离

TextView下划线的添加,控制下划线和文字的距离

下面是效果图:

图片:这里写图片描述

因为在思考这个效果的时候花了一点时间,所以记录了这个过程:

  1. 首先实现上面效果我们首先会想到是什么?

    没错就是TextView的自带的下划线的属性:

    holder.tvCount.setPaintFlags(Paint. UNDERLINE_TEXT_FLAG);
    holder.tvCount.getPaint().setAntiAlias(true);//这里要加抗锯齿

    不过这个实现的是下划线贴在文字的下面,效果不是很好,一般设计师大人也不会这么设计。

  2. 然后我想到在下面添加一个横线不就好了,不过多番尝试后发现下划线无法跟随上面文字长短变化,这里要怎么简单处理?

    这里思考,想让下面的线和上面长短变化相同,怎么做比较简单?

    聪明的你应该已经想到了,就是在下面在放一个TextView不就好了,然后也设置和上面一样的文字给它,他们不就一样了��,这里已经完成了主要思路了,然后想只是需要占个长度就好,所以是不是就需要invisible这个属性了啊,占位但是隐藏控件,然后在外面的LinearLayout就会随着里面TextView长度变化而显示下划线的长短了。

    <LinearLayout  android:layout_width="wrap_content" android:layout_height="30dip" android:gravity="center_horizontal" android:minWidth="33dp" android:orientation="vertical">
               <TextView  android:id="@+id/tv_count" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:singleLine="true" android:text="1" android:textColor="@color/text_second_primary" android:textSize="20sp" />
               <LinearLayout  android:layout_width="wrap_content" android:layout_height="1dp" android:background="#9D9D9D" android:minWidth="10dp">
                   <TextView  android:id="@+id/tv_count_tag" android:layout_width="wrap_content" android:layout_height="1dp" android:paddingLeft="2dp" android:paddingRight="2dp" android:background="#9D9D9D" android:minWidth="10dp" android:textSize="20sp" android:visibility="invisible" />
               </LinearLayout>
           </LinearLayout>

这样是不是就解决了,然后在设置值的时候也给下面的tv_count_tag设置一样的值就好了。

总结一下

上面东西很常见,多数人都会是设置下划线,不过下划线距离文字的距离无法控制,所以不能很好的满足需求,遇到这种的时候,我们就应该换个思路尝试,毕竟方法很多,不能死磕一条路,毕竟开发还是速度越快越好,有时间的话当然是推荐把问题研究透彻。

上一篇:获取SHA1值 下一篇:解决打包脚本在 Xcode9 环境下报错