Android 根据所选按钮的状态更改其背景色
我看到一些帖子有类似的问题,但它们仍然与我这里的问题不同。我正在Android Studio中制作绘画应用程序,我想指出用户选择的选项(无论是移动工具、铅笔等)。下面是图片:Android 根据所选按钮的状态更改其背景色,android,button,background-color,Android,Button,Background Color,我看到一些帖子有类似的问题,但它们仍然与我这里的问题不同。我正在Android Studio中制作绘画应用程序,我想指出用户选择的选项(无论是移动工具、铅笔等)。下面是图片: 因此,我想在选择按钮时更改其背景颜色,并在选择另一个按钮时将其恢复为默认颜色 我试着用XML选择器来做这件事,但后来我发现现在有一个常规按钮的“selected”属性。这些是常规按钮。解决此问题的最简单方法是什么?您可以使用类变量来跟踪当前选定的按钮,并在选择新按钮时进行检测。然后执行“选择”新按钮和“取消选择”上一个按
因此,我想在选择按钮时更改其背景颜色,并在选择另一个按钮时将其恢复为默认颜色
我试着用XML选择器来做这件事,但后来我发现现在有一个常规按钮的“selected”属性。这些是常规按钮。解决此问题的最简单方法是什么?您可以使用类变量来跟踪当前选定的按钮,并在选择新按钮时进行检测。然后执行“选择”新按钮和“取消选择”上一个按钮的操作。例如:
private Button mSelectedButton;
private void setOnClickListeners() {
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View view) {
Button clickedButton = (Button) view;
//in case no button is selected, this will only "select" the clickedButton
if (mSelectedButton == null) mSelectedButton = clickedButton;
//previous selected button (should return to original state)
mSelectedButton.setBackgroundColor(R.color.original_state);
//your new selected button
clickedButton.setBackgroundColor(R.color.selected_state);
mSelectedButton = clickedButton; //save currently selected button
}
};
yourButton1.setOnClickListener(listener);
yourButton2.setOnClickListener(listener);
yourButton3.setOnClickListener(listener);
...
}
您可以使用类变量来跟踪当前选定的按钮,并在选择新按钮时进行检测。然后执行“选择”新按钮和“取消选择”上一个按钮的操作。例如:
private Button mSelectedButton;
private void setOnClickListeners() {
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View view) {
Button clickedButton = (Button) view;
//in case no button is selected, this will only "select" the clickedButton
if (mSelectedButton == null) mSelectedButton = clickedButton;
//previous selected button (should return to original state)
mSelectedButton.setBackgroundColor(R.color.original_state);
//your new selected button
clickedButton.setBackgroundColor(R.color.selected_state);
mSelectedButton = clickedButton; //save currently selected button
}
};
yourButton1.setOnClickListener(listener);
yourButton2.setOnClickListener(listener);
yourButton3.setOnClickListener(listener);
...
}
尝试此代码(button_selector.xml,将其放在可绘图文件夹中)
XML
尝试此代码(button_selector.xml,将其放入可绘图文件夹)
XML
try switch and casetry switch and case谢谢@Lucas这正是我需要的。我很惊讶我在互联网上找不到这个…谢谢你@Lucas这正是我需要的。我感到惊讶的是,我在互联网上的任何地方都找不到这个……如果一个普通的按钮有android:state_选择的条件,这将是一个很好的解决方案,事实并非如此。但对于那些只需要在单击时更改颜色的人来说,它会起作用,但不会像我的情况那样保持选中状态……如果常规按钮具有android:state_selected条件,这将是一个很好的解决方案,但事实并非如此。但对于那些只需要在单击时更改颜色的人,它将起作用,但不会像我的情况那样保持选中状态。。。
<Button
android:background="@drawable/button_selector" />