Android自定义按钮样式

安卓系统自带的按钮样式很不好看,满足不了感官需求,如何自定义一个自己需要的按钮样式呢?

分三步来介绍:

1.自定义按钮背景样式,在res/drawable/目录下新建bg_btn.xml文件。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!--实现的效果:
    按下按钮,边框与背景深色,字体白色
    没有按下按钮,边框与字体深色,背景浅色-->
    <!-- 表示被选中后的按钮样式-->
    <item  android:state_pressed="true">
    <shape>
        <!-- 表示边框-->
        <stroke
            android:color="#99004d"
            android:width="0.8dp"/>
        <!-- 表示圆角弧度-->
        <corners android:radius="15dp"/>
        <!-- 表示内部填充色-->
        <solid android:color="#99004d"/>
    </shape>
    </item>

    <!-- 表示没被选中后的按钮样式-->
    <item android:state_pressed="false">
        <shape>
            <stroke
                android:color="#99004d"
                android:width="0.8dp"/>
            <corners android:radius="15dp"/>
            <solid android:color="#f0dfee"/>
        </shape>
    </item>

</selector>

上述代码说明,在<selector>中有两个<item>,分别代表按钮按下去,按钮没有按下去两种状态。

shape下有三个属性,stroke(边框):可以配置边框颜色与宽度。

                                        corners(圆角弧度):上述代码中四个角度一样,当然也可以配置不同的角度。

                                        solid(填充颜色):组件内部的填充颜色。

2.自定义按钮字体颜色,在res/drawable/目录下新建color_selector.xml文件。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--表示按钮按下与不按下时候字体颜色的不同-->
    <item android:color="#ffffff" android:state_pressed="true"></item>
   
    <item android:color="#99004d"></item>

</selector>

按钮按下去,不按下去时,按钮中字体的不同颜色。

3.在Button组件中用到上述的两个xml文件。
    <Button
        android:background="@drawable/bg_btn"
        android:textColor="@drawable/color_selector"
        android:fontFamily="sans-serif"
        android:layout_marginTop="10dp"
        android:textSize="18sp"
        android:text="自定义样式"
        android:id="@+id/btn_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

在android:background 中用到第一步中的样式配置文件。

在android:textColor中用到第二部中的颜色配置文件。

finish!转载请说明,并附上本文链接,谢谢!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值