Android Button 属性介绍与使用

1,210 阅读2分钟

一、简介

  • Button 控件继承 TextView,拥有 TextView 的属性。

  • StateListDrawableDrawable 资源的一种,可以根据不同的状态,设置不同的图片效果,关键节点 <selector >,只需要将 Buttonbackground 属性设置为该 app/res/drawable 资源即可轻松实现,按下按钮时不同的按钮颜色或背景。

二、Button 属性

  • 代码常用属性

    属性含义
    setClickable(boolean clickable)设置按钮是否允许点击。clickable=true:允许点击。clickable=false:禁止点击
    setBackgroundResource(int resid)通过资源文件设置背景色。resid:资源xml 文件 ID。按钮默认背景为:android.R.drawable.btn_default
    setOnClickListener(OnClickListener l)设置按钮点击事件
    继承属性支持TextView 属性 同样支持,就不列举了。
  • xml 常用属性

    属性含义
    onClick设置按钮点击事件
    继承属性支持TextView 属性 同样支持,就不列举了。

三、selector 使用

  • Android Button 设置 android:background="@drawable/xxx" 无效解决方案

  • selectorshape 使用方式差不多,需要在 app/res/drawable 文件夹下新建 .xml 文件并进行配置。

  • selector 常用属性

    属性含义
    drawable正常按钮的一个背景颜色或图片,可以配置多种状态下的显示
    state_focused是否获得焦点
    state_window_focused是否获得窗口焦点
    state_enabled控件是否可用
    state_checkable控件可否被勾选
    state_checked控件是否被勾选
    state_selected控件是否被选择,针对有滚轮的情况
    state_pressed控件是否被按下
    state_active控件是否处于活动状态
    state_single控件包含多个子控件时,确定是否只显示一个子控件
    state_first控件包含多个子控件时,确定第一个子控件是否处于显示状态
    state_middle控件包含多个子控件时,确定中间一个子控件是否处于显示状态
    state_last控件包含多个子控件时,确定最后一个子控件是否处于显示状态

四、结合以上写的案例

  • app/res/drawable 中新建一个 btn_bg.xml 文件进行配置

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@color/dzm1" android:state_pressed="true" />
        <item android:drawable="@color/dzm2" android:state_enabled="false" />
        <item android:drawable="@color/dzm3" />
    </selector>
    
  • xml 布局中使用

    <Button
        android:id="@+id/dzm"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="按钮"
        android:background="@drawable/btn_bg"/>
    
  • 效果

    temp.gif

  • 代码 - 点击事件

    Button btn = (Button)findViewById(R.id.dzm);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // 点击事件
        }
    });
    
  • xml - 点击事件

    android:onClick="doClick"
    

    image.png