Android自定义Button点击效果

本文介绍了如何在Android中自定义Button的背景和点击效果。通过设置Button的background属性使用图片作为背景,并提供了两种实现点击效果的方法:一是通过XML配置不同状态下的图片显示,包括按下、焦点和启用状态;二是通过代码在点击事件中处理。

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

Button往往在layout布局文件中添加,Button的背景色如果不做特殊修改,默认是灰色的,看起来很丑。那如何自定义Button的背景以及点击效果呢?

在Button的属性中background属性指定Button背景显示,如果指定一张图片即background="@drawable/btn_img"这样就能以该图片显示背景。如果要在点击Button的时候有点击效果,方法有两种:

方法一、在xml中配置:

    <Button
        android:id="@+id/permit_btn"
        android:layout_width="90dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="@drawable/btn_style"
        android:textSize="16sp"
        android:textColor="@color/red" />
而其中btn_style是在drawable文件夹下的一个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/btn_default_pressed" /> 
    <item android:state_focused="true" android:drawable="@drawable/btn_default_focused" /> 
    <item android:state_enabled="true" android:drawable="@drawable/btn_default_normal" />
    <item android:drawable="@drawable/btn_default_disable" /> 
</selector>
一般我们定义三到四种状态就足够了,简单说明下:

android:state_pressed="true" 按下Button时显示对应的图片;

android:state_focused="true" 焦点在Button上时显示对应图片;

android:state_enabled="true" 可用状态即常见状态下显示对应的图片;


方法二、在代码中点击事件中处理:

        @Override  
        public boolean onTouch(View v, MotionEvent event) {  
            // TODO Auto-generated method stub  
            if(event.getAction()==MotionEvent.ACTION_DOWN){  
                v.setBackgroundResource(R.drawable.button_default_pressed);  
            }else if(event.getAction()==MotionEvent.ACTION_UP){  
                v.setBackgroundResource(R.drawable.button_default_nomal);  
            }  
            return false;  
        }  
简单记录下,以备不时之需。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值