一手遮天 Android - view(按钮类): Button 样式

项目地址 https://github.com/webabcd/AndroidDemo
作者 webabcd

一手遮天 Android - view(按钮类): Button 样式

示例如下:

/view/button/ButtonDemo2.java

/**
 * Button - 按钮控件(继承自 TextView)
 *
 *
 * 本例介绍 Button 的样式
 */

package com.webabcd.androiddemo.view.button;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;

import com.webabcd.androiddemo.R;

public class ButtonDemo2 extends AppCompatActivity {

    private Button _button3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_button_buttondemo2);

        _button3 = (Button) findViewById(R.id.button3);

        sample();
    }

    private void sample() {
        // 将 button 设置为不可用
        _button3.setEnabled(false);

        // 设置 button 的各种状态下的背景样式(详见 drawable/selector_button_background.xml)
        _button3.setBackgroundResource(R.drawable.selector_button_background);

        // 设置 button 的各种状态下的文字颜色(详见 color/selector_button_textcolor.xml)
        _button3.setTextColor(getResources().getColorStateList(R.color.selector_button_textcolor));
    }
}

/layout/activity_view_button_buttondemo2.xml

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

    <!--
        设置 button 的背景样式(详见 drawable/shape_button_background.xml)
        设置 button 的文字颜色
    -->
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/shape_button_background"
        android:textColor="@color/orange"
        android:text="按钮 1" />

    <!--
        设置 button 的各种状态下的背景样式(详见 drawable/selector_button_background.xml)
        设置 button 的各种状态下的文字颜色(详见 color/selector_button_textcolor.xml)
    -->
    <Button
        android:id="@+id/button2"
        android:layout_marginTop="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/selector_button_background"
        android:textColor="@color/selector_button_textcolor"
        android:text="按钮 2" />

    <!--
        在 java 中设置 button 的各种状态下的背景样式和文字颜色
    -->
    <Button
        android:id="@+id/button3"
        android:layout_marginTop="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮 3" />

</LinearLayout>

/drawable/selector_button_background.xml

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

    <!--
        state_enabled="false" - 按钮不可用
        state_pressed="false" - 按钮没有被按下
        state_pressed="true" - 按钮被按下

        注意:
        1、selector 是按照顺序匹配状态的,先匹配到哪个就用哪个。比如一个按钮既是 state_enabled="false" 又是 state_pressed="false",那么就看哪个状态的定义靠前就用哪个状态的样式
        2、一个 item 是可以有多个 state 的
    -->

    <item android:state_enabled="false">
        <shape>
            <solid android:color="@color/gray" />
            <stroke android:width="1dp" android:color="@color/blue" />
            <corners android:radius="5dp" />
        </shape>
    </item>
    <item android:state_pressed="false">
        <shape>
            <solid android:color="@color/red" />
            <stroke android:width="1dp" android:color="@color/blue" />
            <corners android:radius="5dp" />
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape>
            <solid android:color="@color/green" />
            <stroke android:width="1dp" android:color="@color/blue" />
            <corners android:radius="5dp" />
        </shape>
    </item>
</selector>

项目地址 https://github.com/webabcd/AndroidDemo
作者 webabcd

posted @ 2021-05-31 12:31  webabcd  阅读(151)  评论(0编辑  收藏  举报