TextView下划线的添加,控制下划线和文字的距离
下面是效果图:
图片:
因为在思考这个效果的时候花了一点时间,所以记录了这个过程:
首先实现上面效果我们首先会想到是什么?
没错就是TextView的自带的下划线的属性:
holder.tvCount.setPaintFlags(Paint. UNDERLINE_TEXT_FLAG); holder.tvCount.getPaint().setAntiAlias(true);//这里要加抗锯齿
不过这个实现的是下划线贴在文字的下面,效果不是很好,一般设计师大人也不会这么设计。
然后我想到在下面添加一个横线不就好了,不过多番尝试后发现下划线无法跟随上面文字长短变化,这里要怎么简单处理?
这里思考,想让下面的线和上面长短变化相同,怎么做比较简单?
聪明的你应该已经想到了,就是在下面在放一个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设置一样的值就好了。
总结一下
上面东西很常见,多数人都会是设置下划线,不过下划线距离文字的距离无法控制,所以不能很好的满足需求,遇到这种的时候,我们就应该换个思路尝试,毕竟方法很多,不能死磕一条路,毕竟开发还是速度越快越好,有时间的话当然是推荐把问题研究透彻。
补充
下面是同学留言说的方法,可以实现上述效果,感谢赐教。
下面是代码:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2" />
<View
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_alignBottom="@+id/tv_count"
android:layout_alignEnd="@+id/tv_count"
android:layout_alignStart="@+id/tv_count"
android:background="@color/colorAccent"
android:minWidth="4dp" />
</RelativeLayout>
结束