一手遮天 Android - view(按钮类): Button 样式
一手遮天 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>