StateListDrawable状态选择器

StateListDrawable:
针对布局的各种状态进行背景的修改
activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.fitsoft.MainActivity">

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        android:background="@drawable/bg_login"
        android:text="登录"
        android:textColor="#fff"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

首选在主布局中创建一个简单按钮。然后在drawable文件夹下新建背景布局


布局内容如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="false" android:drawable="@drawable/bg_login_default"/>

    <item android:state_pressed="true" android:drawable="@drawable/bg_login_pressed"/>

</selector>

设置两个状态的背景,一个是按下时背景,一个是未按下时的背景,这里用到了上一次的shape的内容,其中 bg_login_default.xml 这个shape内容为:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners android:radius="10dp"/>

    <solid android:color="#1C9246"/>

    <stroke android:width="1dp"
        android:color="@android:color/darker_gray"/>

</shape>

有圆角,有描边的矩形shape,而另一个 bg_login_pressed.xml 的内容一样,只有颜色不同,这里就不放了。
大体思路,将组件背景指定为selector,在selector中为其各种状态设置相应的shape。
效果图:

原文地址:https://www.cnblogs.com/zqm-sau/p/11600270.html

时间: 2024-11-05 13:39:00

StateListDrawable状态选择器的相关文章

Drawable子类之——StateListDrawable (选择器)

Drawable子类之--StateListDrawable (选择器) https://www.jianshu.com/p/7257ce82c762 StateListDrawable对应的XML根元素是<selector>,它可以根据View的状态的不同匹配展示不同的Drawable.比如点击时背景是红色,不点击时时白色,所以StateListDrawable鲳鱼点击事件的背景. 我们常常给按钮的按下的时候设定一个特殊的背景,大概如下 <?xml version="1.0&

Android状态选择器用法总结

原创文章,转载请注明出处http://www.cnblogs.com/baipengzhan/p/6284682.html 本文首先列出常见状态选择器的创建,然后按照常用控件来分别列出状态选择器的具体用法. 颜色状态选择器颜色状态选择器创建在res/color目录下,color目录一般不存在,我们自己创建即可. 颜色状态选择器只能用作改变颜色的地方,例如改变文字颜色等场合,不能作为背景, 当做背景时会出错,这点千万要注意. 以下为一个颜色状态选择器,今后可以参考这个创建其它的: <?xml ve

Android初级教程:如何自定义一个状态选择器

有这样一种场景:点击一下某个按钮或者图片(view),改变了样式(一般改变背景颜色).这个时候一种解决方案,可能就是状态选择器.接下来就介绍如何实现状态选择器: 步骤: 一.新建这样的文件夹:res/drawable 二.创建一个xml文件:这里命名为my_select.xml(注意选择select类型的文件) 三.接下来在里面写如下代码: <?xml version="1.0" encoding="utf-8"?> <selector xmlns

listview设置条目点击的时候不变色(让状态选择器不起作用)

未设置前的效果如下图: 很明显,“酷狗音乐”那个条目被点击的时候,条目背景变为蓝色,怎么去掉这个颜色呢? java代码可以这么写: 1 listView.setSelector(new ColorDrawable());//设置默认状态选择器为全透明,不传颜色就是没颜色 效果如下图:

深入学习jQuery选择器系列第六篇——过滤选择器之状态选择器

× 目录 [1]焦点状态 [2]哈希状态 [3]动画状态[4]显隐状态 前面的话 过滤选择器的内容非常多,本文介绍过滤选择器的最后一部分——状态选择器 焦点状态 :focus :focus选择器选择当前获得焦点的元素 <div> <button>btn1</button> <button>btn2</button> <button>btn3</button> </div> <script> docu

5 状态选择器

1 在res的drawable目录下 新建xml文件 在布局文件中设置button的background属性为这个xml 2 <?xml version="1.0" encoding="utf-8"?> 3 <selector xmlns:android="http://schemas.android.com/apk/res/android"> 4 5 <item android:drawable="@dr

android的文本状态选择器-ColorStateList

前言:我们都知道在drawable中我们可以自定义button等别的控件的选择状态,比如如果选中什么颜色,默认什么颜色,然而button的文本也能通过这种方式来进行设置 ,这就需要ColorStateList的这个类. 1.这个是他的文档   2.使用方式   ①类似的需要定义一个XML的选择器,但是item中只需指明状态和颜色 button_text_selector.xml文件 1 <selector xmlns:android="http://schemas.android.com/

29 状态选择器

1 <?xml version="1.0" encoding="utf-8"?> 2 <selector xmlns:android="http://schemas.android.com/apk/res/android"> 3 4 <!-- 没有焦点时的背景图片 --> 5 <item android:drawable="@drawable/handle_normal" androi

Android studio中设置颜色的状态选择器

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/radio_text_color_checked" android:state_checked="true"/> <item android:color="@color/radio_text_color_unche