我正在创建一个清单,我有 2 个按钮。当我单击 false 时,我想更改样式。当我单击 true 时,我希望 false 返回到原始样式,并更改 True 按钮的样式
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/inspectionItemText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:layout_weight="2"
android:text="Inspection Item"
android:textSize="20sp"
android:textStyle="bold" />
<Button
android:id="@+id/itemInspectedTrue"
style="@style/Base.Widget.AppCompat.Button.Borderless"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:layout_weight="0.5"
android:background="@drawable/button_border"
android:text="Pass"
android:textColor="@color/colorPrimaryDark"
android:textStyle="bold" />
<Button
android:id="@+id/itemInspectedFalse"
style="@style/Base.Widget.AppCompat.Button.Borderless"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:layout_weight="0.5"
android:background="@drawable/button_border"
android:text="Fail"
android:textColor="@color/colorPrimaryDark"
android:textStyle="bold" />
</LinearLayout>
不能以编程方式更改视图主题(在 xml 中定义),但可以通过编程方式更改整个活动的主题。
您可以使用选择器来区分选定状态和非选定状态
drawable/button_background.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/button_pressed" />
<item
android:state_pressed="false"
android:drawable="@drawable/button_normal" />
</selector>
和布局 XML 文件
<Button
android:id="@+id/itemInspectedFalse"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="4dp"
android:layout_weight="0.5"
android:background="@drawable/button_background"
android:text="Fail"
android:textColor="@color/colorPrimaryDark"
android:textStyle="bold" />