Android CheckBox 无文字图片居中显示选中状态

目标需求:按钮选中和不选中两种状态,无文字,纯图标显示,并且带有背景颜色。

如图:

 素材:

 只有中间的麦克风形状图片,所以背景的浅蓝色需要用xml文件写shape的drawable文件实现,并且需要占用控件的background属性,所以控件必须有另一个属性可以用来显示中间的麦克风图片,这样的话就只能用ImageButton或者CheckBox了,但是ImageButton没有选中的效果,最后用CheckBox来实现了

布局如下:

        <CheckBox
            android:id="@+id/audioSet"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/pressed_button"
            android:padding="15dp"
            android:checked="true"
            android:gravity="center"
            android:button="@null"
            android:drawableStart="@drawable/mic_set" />

总体来说很简单,不过有个需要注意的问题:

写xml文件selector的时候,如果你的默认状态只给了资源id,其他状态的item记得放在上面,否则可能没有效果

如下,如果state_checked=true这个item如果放在下面,就会没有选中效果了

<selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
    <item android:drawable="@drawable/mic_mute" android:state_checked="true" />
    <item android:drawable="@drawable/mic_normal" tools:ignore="StateListReachable" />
</selector>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值