Android 根据所选按钮的状态更改其背景色

Android 根据所选按钮的状态更改其背景色,android,button,background-color,Android,Button,Background Color,我看到一些帖子有类似的问题,但它们仍然与我这里的问题不同。我正在Android Studio中制作绘画应用程序,我想指出用户选择的选项(无论是移动工具、铅笔等)。下面是图片: 因此,我想在选择按钮时更改其背景颜色,并在选择另一个按钮时将其恢复为默认颜色 我试着用XML选择器来做这件事,但后来我发现现在有一个常规按钮的“selected”属性。这些是常规按钮。解决此问题的最简单方法是什么?您可以使用类变量来跟踪当前选定的按钮,并在选择新按钮时进行检测。然后执行“选择”新按钮和“取消选择”上一个按

我看到一些帖子有类似的问题,但它们仍然与我这里的问题不同。我正在Android Studio中制作绘画应用程序,我想指出用户选择的选项(无论是移动工具、铅笔等)。下面是图片:

因此,我想在选择按钮时更改其背景颜色,并在选择另一个按钮时将其恢复为默认颜色

我试着用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" />