简介
RoundCornerTextView 继承自TextView。它拥有TextView的方法,并且进行了功能扩展。RoundCornerTextView 能够轻松的实现原本需要编写Shape 设置背景等繁琐操作才能实现的控件效果。因此,使用了RoundCornerTextView 之后能够使你不用频繁的创建Shape 或导入图片,节省了大量内存。
主要功能
通过组合RoundCornerTextView 的功能,能够创造出上面的效果图中的几种基本效果。当然,当你脑洞大开时能够创造更多有趣而奇怪的效果。下面将介绍RoundCornerTextView 的一些特性。
使用前准备
你可以在xml文件中直接设置RoundCornerTextView 的这些有趣的特有属性。当然,在此之前,你必须确保已经把RoundCornerTextView的<declare-styleable>
的自定义属性加入到你项目中的attrs.xml
中(点击这里寻找RoundCornerTextView的<declare-styleable>)。然后,你需要在布局文件的开头申明自定义命名空间xmlns:app="http://schemas.android.com/apk/res-auto"
。现在,可以开始使用RoundCornerTextView 进行创作了。
属性说明
<RoundCornerTextView
android:layout_width="50dp"
android:layout_height="50dp"
app:corner="25dp" //设置圆角。会同时作用于填充和边框(如果边框存在的话)。如果要设置为圆形,只需要把该值设置为宽或长的1/2即可。
app:solid="@color/red" //设置填充颜色
app:stroke_color="@color/black" //设置边框颜色
app:stroke_width="2dp" //设置边框的宽度。
app:state_drawable="@drawable/vector_emoji_1" //放置一个drawable在背景上。默认居中显示。
app:state_drawable_mode="center" //设置drawable的显示模式。可选值如下:
// left、top、right、bottom、center(默认值)、leftTop、rightTop、leftBottom、rightBottom、fill(充满整个RoundCornerTextView)
app:isShowState="true" // boolean类型。是否显示drawable。这在控制状态时十分有用。
app:text_stroke="true" // boolean类型。是否启用文字描边模式。注意,启用这个模式之后通过setTextColor()设置的颜色将会被覆盖。
app:text_stroke_color="@color/black" // 文字的描边颜色。默认为Color.BLACK。
app:text_stroke_width="1dp" // 文字描边的宽度。
app:text_fill_color="@color/blue" // 文字填充的颜色。默认为Color.BLACK。
app:autoAdjust="true" // boolean类型。是否启用自动调整功能。具体调整什么,需要在Java中为RoundCornerTextView实现一个TextAdjuster。
//当你启用这个功能而没有实现自己的TextAdjuster时,RoundCornerTextView会启用默认的TextAdjuster。它会按照一定的规则调整文字大小。
/>
以上这些属性,你均可以在Java中进行动态的设置。同时也能够获得它们的值。例如:
mRoundCornerTextView.setCorner(10);
mRoundCornerTextView.getCorner();
TextAdjuster
如果你实现了TextAdjuster ,它将会在绘制文字之前被调用。因此,你可以根据需求在文字绘制前进行一些操作,例如默认的字体大小调整。如果你希望停止这种变化,只需要调用setTextAdjuster(null)
。
mRoundCornerTextView.setTextAdjuster(v->{
// 在这里进行一些操作,它们将在文字开始被绘制的前一刻被执行
});
链接
如果你觉得还不错的话,那么感谢你关注我哦,或者给我点个赞哦。