Android StateListDrawable设置状态,控件状态控制

前言

StateListDrawable 是用于为各种控件设置不同的状态的 Drawable


效果图

GIF图,后续放上


属性解析

属性说明
android:drawable引用的 Drawable 位图, 把放到最前面,就表示组件的正常状态
android:state_focused是否获得焦点
android:state_window_focused是否获得窗口焦点
android:state_enabled控件是否可用
android:state_checkable控件可否被勾选,比如 checkbox
android:state_checked控件是否被勾选
android:state_selected控件是否被选择,针对有滚轮的情况
android:state_pressed控件是否被按下
android:state_active控件是否处于活动状态,eg:slidingTab
android:state_single控件包含多个子控件时,确定是否只显示一个子控件
android:state_first控件包含多个子控件时,确定第一个子控件是否处于显示状态
android:state_middle控件包含多个子控件时,确定中间一个子控件是否处于显示状态
android:state_last控件包含多个子控件时,确定最后一个子控件是否处于显示状态

按钮点击示例

以按钮点击前后背景改变示例在res/drawable目录下建点击背景文件 shape_btn_pressed.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#D8D4D4"/>
    <corners android:radius="5dp"/>
    <padding android:top="2dp" android:bottom="2dp"/>
</shape>
1、无边框按钮 

 在res/drawable目录下建默认背景文件 shape_btn_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#0EECE5"/>
    <corners android:radius="5dp"/>
    <padding android:top="2dp" android:bottom="2dp"/>
</shape>
2、有边框按钮

在res/drawable目录下建默认背景文件 shape_btn_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <stroke android:color="#D8D4D4" android:width="5dp" />
    <solid android:color="#FFFFFF"/>
    <corners android:radius="5dp"/>
    <padding android:top="2dp" android:bottom="2dp"/>
</shape>

 使用StateListDrawable建立选择,在res/drawable目录下建默认背景文件 selector_btn.xml

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

最后按钮背景引用selector_btn_unborder即可

<Button
    android:id="@+id/confirm_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="确认"
    android:background="@drawable/selector_btn_unborder"/>

总结

凡是需要有点击效果的控件都可以使用Drawable自定义的资源,不需要在逻辑代码里设置背景更改,并且控件有效果与无效果的对用户体验也是不一样。

1、详细ShapeDrawable使用查看 ShapeDrawable 背景自定义

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设置Android图片的选中状态,可以使用`selector`来实现。`selector`是一种XML文件,可根据不同的状态选择不同的Drawable资源。以下是一个简单的示例代码: 1. 创建一个名为`selector_image.xml`的XML文件,并在`drawable`目录中存储它。 ```xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 被选中的状态 --> <item android:drawable="@drawable/image_selected" android:state_selected="true" /> <!-- 正常状态 --> <item android:drawable="@drawable/image_normal" /> </selector> ``` 在这个示例中,我们定义了两个状态:`state_selected`和默认状态,分别对应了选中和未选中的状态。我们可以在`item`标签中使用`android:drawable`属性来指定不同状态下显示的Drawable资源。在这个示例中,当图片被选中时,显示`image_selected`资源,否则显示`image_normal`资源。 2. 在布局文件中使用`ImageView`控件,并为其设置`src`属性为`selector_image`。 ```xml <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/selector_image" /> ``` 在这个示例中,我们将`selector_image`资源设置为`ImageView`的`src`属性,这样我们就可以看到不同状态下显示的图片了。 现在当`ImageView`被选中时,会显示`image_selected`资源,否则显示`image_normal`资源。你可以根据需要修改`selector`的XML文件,以满足不同的设计要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值