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设置一样的值就好了。

总结一下

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

补充

下面是同学留言说的方法,可以实现上述效果,感谢赐教。
下面是代码:

<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>

结束

你可能感兴趣的:(问题分析)