selector和shape,实现button上既有样式,也有背景

这篇博客详细介绍了如何通过XML的selector和shape元素来为Android的button创建不同状态下的背景样式,包括焦点、按下和默认状态。通过设置stroke宽度、颜色、圆角以及渐变色,实现了按钮的视觉效果变化。

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

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

        <!-- 获得焦点但未按下时的背景图片 -->
        <item  android:state_enabled="true" android:state_focused="true" android:state_pressed="false">
            <shape>
                <stroke android:width="1dp" android:color="@color/colorbaise" />
                <!--corners主要是设置我们所画图形四个角的半径 radius:四角半径 bottomLeftRadius:左下角半径,
    14     bottomRightRadius:右下角半径,topLeftRadius:左上角半径,topRightRadius:右上角半径-->
                <corners android:bottomLeftRadius="5dp" android:topLeftRadius="5dp" />
                <gradient android:startColor="@color/colorbaise" android:endColor="@color/colorbaise"/>
            </shape>
        </item>
        <!-- 按下时的背景图片 -->
        <item  android:state_enabled="true" android:state_pressed="true">
            <shape>
                <stroke android:width="1dp" android:color="@color/colorbaise" />
                <!--corners主要是设置我们所画图形四个角的半径 radius:四角半径 bottomLeftRadius:左下角半径,
    14     bottomRightRadius:右下角半径,topLeftRadius:左上角半径,topRightRadius:右上角半径-->
                <corners android:bottomLeftRadius="5dp" android:topLeftRadius="5dp" />
                <gradient android:startColor="@color/colorbaise" android:endColor="@color/colorbaise"/>
            </shape>

        </item>
        <!-- 按下时的背景图片 -->
        <item  android:state_checked="true" android:state_enabled="true">
            <shape>
                <stroke android:width="1dp" android:color="@color/colorbaise" />
                <!--corners主要是设置我们所画图形四个角的半径 radius:四角半径 bottomLeftRadius:左下角半径,
     14     bottomRightRadius:右下角半径,topLeftRadius:左上角半径,topRightRadius:右上角半径-->
                <corners android:bottomLeftRadius="5dp" android:topLeftRadius="5dp" />
                <gradient android:startColor="@color/colorbaise" android:endColor="@color/colorbaise"/>
            </shape>

        </item>
        <!-- 默认时的背景图片 -->
        <item>
            <shape>
                <stroke android:width="1dp" android:color="@color/colorbaise" />
                <!--corners主要是设置我们所画图形四个角的半径 radius:四角半径 bottomLeftRadius:左下角半径,
     14     bottomRightRadius:右下角半径,topLeftRadius:左上角半径,topRightRadius:右上角半径-->
                <corners android:bottomLeftRadius="5dp" android:topLeftRadius="5dp" />
            </shape>
        </item>
        <!-- -->
    </selector>
  • 注意点就是:在<item></item>标签中的背景android:drawable,删除,这个才有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值