一般为TextView设置个背景,比如圆角矩形,再加个什么颜色啊等等,可以在xml文件中定义一个Shape。也可以在java代码中实现,使用GradientDrawable类,这就是Shape对应的类。
记录一个坑,多个View使用了同一个shape,然后在某一个地方,用java代码修改了,会影响多个地方。
比如定义一个这样的shape
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="@color/main_color_blue"/>
</shape>
在多个TextView用这个shape设置了背景,然后把某一个TextView背景修改了
GradientDrawable background = (GradientDrawable) view1.getBackground();
background.setColor(Color.RED);
其他的TextView也会受影响,但是不一定立马就表现出来
需要做一下处理
GradientDrawable background = (GradientDrawable) view1.getBackground();
background = (GradientDrawable) background.mutate();
background.setColor(Color.RED);
mutate()
方法基本是复制了一个新的,也不用重新设置给view
网友评论