背景selector、字体selector布局详解

1、如果你想做一个背景选择器,那么在drawable文件夹下去新建selector xml,现在就面临两种大的方向选择:

 (1)背景选择器:

          背景选择器又有两张选择:第一种是当你按下时时切换一张图片,那么就直接用UI给的图片,这个很简单;我要说的是第二种,通常就是UI没有给你图片,那么你就要自己来画选中背景的变化,这个时候你很容易犯一个错,那就是直接在drawable的后面写“#000”等颜色值,比如是下面这种写法:

<item android:drawable="#c1815e" android:state_pressed="true" />
一运行就会报错。

正确的写法有两种,方法一其实我不怎么推荐用,因为colors文件里面是用来存放通用的color的:

方法一:在values的文件夹下的colors.xml文件里面把颜色值写在哪里:

<color name="colorAccent">#FF4081</color>
然后再去selector里面把这个名字写上去就可以了:

<item android:drawable="@color/colorAccent" android:state_selected="true" />

然后一个完整的例子:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/firstSelect" android:state_selected="true" />
    <item android:drawable="@color/firstSelect" android:state_pressed="true" />
    <item android:drawable="@color/firstNormal"/>
</selector>

方法二:是在drawable文件夹下,新建两个shape类的xml,一个normal,一个select,然后在里面写填充:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#2ff208"/>
</shape>
再在selector里面去使用,以下是一个完整的例子:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/backagegroud1_select" android:state_selected="true" />
    <item android:drawable="@drawable/backagegroud1_select" android:state_pressed="true" />
    <item android:drawable="@drawable/backagegroud1_normal" />
</selector>


(2)字体选择器:

         字体选择器跟布局选择器是不一样的,在res目录下新建xml文件,但是里面不再是darwable了,而是在res目录 下新建color文件夹。然后虽然如果你在drawable的目录下也能达到同样的效果,只不过如果实在drawable的话里面的color不能直接写值,但是不建议那样做,因为不符合规范。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="#fff" android:state_pressed="true" />
    <item android:color="#000" android:state_checkable="false"/>
    <item android:color="#fff" android:state_checkable="true" />
</selector>

使用的时候用的是@color

<RadioButton
    android:id="@+id/rd_1"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:background="@drawable/bg1_selector"
    android:button="@null"
    android:textColor="@color/text_bg_selector"
    android:gravity="center"
    android:text="第一个" />

  

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值