Android 中的selector常用来设置背景,可以很方便的根据checked,selected等不同状态设置不同背景,不需要自己在Java代码设置了,简单,优雅!
相信selector设置背景色大家都很熟悉了,这里介绍两个最近总结的一些技巧。
- 背景色和文字颜色的设置
类似微信的底部导航,点击不同的底部按钮,会显示选中的图片,同时文字也会变色,背景图片用selector很容易实现了,那么文字呢 ?需要自己用代码去设置吗?NO!文字也可以用selector来实现!
在res/color文件夹下,设置tab_color_seletor文件,具体内容为:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 单击选中时字体颜色--> <item android:state_pressed="true" android:color="@color/white" /> <!-- 滚动选中时字体颜色--> <item android:state_checked="true" android:color="@color/white" /> <!-- 默认字体颜色--> <item android:color="@color/black" /> </selector>
这样设置导航的TextView的textColor为 tab_color_seletor 即可实现上述想要实现的效果
2. 只设置背景的底部边框
想要达到这种效果,点击不同tab标签时,对应的底部出现蓝色横线,怎么实现?
这里就要借助layer-list了。
这里在选中的时候,layer-list先是设置整个背景为蓝色,然后又覆盖了一层白色,但是底部留了2dp的距离,这样就把蓝色显示出来了
具体代码如下:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true"> <layer-list> <item> <shape> <solid android:color="@color/blue" /> </shape> </item> <!-- This is the line note:这里的bottom相当于margin_bottom--> <item android:bottom="2dp"> <shape> <solid android:color="#FFFFFF" /> </shape> </item> </layer-list> </item> <item android:drawable="@color/white"/> </selector>