分享一下Android中实现下划线的几种方式:
一、通过TextView中的setFlags方法设置成Paint.UNDERLINE_TEXT_FLAG。
tv=(TextView)findViewById(R.id.tv);
tv.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
实现效果如下:
二、为TextView设置背景Drawable
这里需要使用到LayerDrawable,对应于<layer-list>标签。在drawable目录下新建一个text_underline.xml文件,text_underline.xml的代码如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="-2dp"
android:right="-2dp"
android:top="-2dp">
<shape>
<stroke
android:width="1dp"
android:color="#008577" />
</shape>
</item>
</layer-list>
然后设置TextView的android:background="@drawable/text_underline"
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/text_underline"
android:text="Hello World!"
android:textColor="#008577"
android:textSize="15sp" />
实现效果如下:
总的来说,这种方法要相对灵活的多,既可以自由设置下划线的颜色和宽度;又可以通过android:paddingBottom属性设置下划线和文本的间距,不用像第一种方式那样紧凑;还可以通过<selector>标签来设置TextView按下或松开、获取焦点或失去焦点时下划线的不同颜色状态。
三、在TextView的下面添加一条横线
这种方法相对比较直观,也比较简单,但没有第二种方式灵活。
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:textColor="#008577"
android:textSize="15sp" />
<View
android:layout_width="wrap_content"
android:layout_height="1dp"
android:layout_below="@+id/tv"
android:layout_alignLeft="@+id/tv"
android:layout_alignRight="@+id/tv"
android:background="#008577" />
</RelativeLayout>