Android的shape和颜色选择器结合使用

本文介绍如何使用Android的Shape和颜色选择器实现按钮在不同状态下的颜色变化,包括正常、按下和选中状态的颜色配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果如下:

点击前


点击后



shape文件和颜色选择器的定义都必须定义在drawable文件夹下




bind_bg_normal.xml 正常时候的颜色

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"><!-- android:shape="rectangle"表示圆角长方形 -->
    <corners android:radius="2dp"/><!-- 圆角的弧度 -->
    <gradient   android:startColor="@color/black"
        		android:endColor="@color/blue"/><!-- 渐变色的设置  这里可以设置起始  中间  结束位置的颜色 -->
    <!-- 设置边框颜色  宽度  dashWidth虚线的长度    虚线之间的间隔长度dashGap    -->
    <stroke android:width="1dp" android:dashWidth="10dp" android:dashGap="1dp" android:color="@color/white"/>
</shape>


bind_bg_pressed.xml 按下时候的颜色

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="2dp"/>
    <gradient android:startColor="@color/white"
        		android:endColor="@color/black"/>
    <stroke android:width="1dp" android:dashWidth="10dp" android:dashGap="15dp" android:color="@color/blue"/>
</shape>

bind_bg_selected.xml颜色选择器

<?xml version="1.0" encoding="utf-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android">  
    <!-- 按下时显示颜色 -->
    <item android:drawable="@drawable/bind_bg_pressed" android:state_pressed="true"/>
    <!-- 获取焦点显示颜色 -->
    <item android:drawable="@drawable/bind_bg_pressed" android:state_focused="true"/>
    <!-- 选择状态时显示颜色 -->
    <item android:drawable="@drawable/bind_bg_normal" android:state_selected="true"/>
    <!-- 正常状态下显示颜色 -->
    <item android:drawable="@drawable/bind_bg_normal"/>
</selector>  


color.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="black">#000000</color>
    <color name="blue">#FF3F00</color>
    <color name="white">#FFFFFF</color>
</resources>

main.xml  别忘记用android:background导入颜色选择器,让其作用于这个布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bind_bg_selected"
        android:clickable="true" ><!-- RelativeLayout必须加android:clickable="true" 点击才有反映 -->

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="30dp"
            android:gravity="center"
            android:text="SHAPE" />
    </RelativeLayout>

</LinearLayout>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值