在我的 Android 应用程序中,
我有一个屏幕,其中有一个 9X9 单元格(按钮/图像)的网格。
我需要使用两个不同的图像作为背景(例如:开和关)来指示选中或未选中单元格的状态。
现在我正在使用按钮并单击按钮,我正在将按钮的背景图像从打开更改为关闭,反之亦然。
我的问题是,
1.从“清洁代码”的角度来看,这是正确的处理方式吗?
2.有没有更好的方法来完成任务?
(注意:我想保留单击按钮的选项,即使它已经打开,以备将来使用)
谢谢 :)
在我的 Android 应用程序中,
我有一个屏幕,其中有一个 9X9 单元格(按钮/图像)的网格。
我需要使用两个不同的图像作为背景(例如:开和关)来指示选中或未选中单元格的状态。
现在我正在使用按钮并单击按钮,我正在将按钮的背景图像从打开更改为关闭,反之亦然。
我的问题是,
1.从“清洁代码”的角度来看,这是正确的处理方式吗?
2.有没有更好的方法来完成任务?
(注意:我想保留单击按钮的选项,即使它已经打开,以备将来使用)
谢谢 :)
您可以使用 Button,通常程序员会这样做,但我建议改为使用ToggleButton
。
在按钮上使用 ToggleButton 的好处是,您不需要使用任何标志以编程方式维护按钮的状态,以记住用户是否选择了一次按钮,以下是相同的演示代码:
布局文件夹中的 XML
<ToggleButton
android:id="@+id/tbApp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/selector_toggle_button"
android:textOff=""
android:textOn="" />
可绘制文件夹中的 selector_toggle_button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/toggle_on" />
<item android:drawable="@drawable/toggle_off" />
</selector>
和Java代码点击它,
tbApp.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
//if isChecked==true then selected
//else deselected
}
}