【问题标题】:Button color is changing when pressed but when i go for next iteration that button color is not going to default background color按下时按钮颜色会发生变化,但是当我进行下一次迭代时,按钮颜色不会变为默认背景颜色
【发布时间】:2019-12-23 13:44:31
【问题描述】:

我对 Android 应用程序开发非常陌生。目前我正在做一个简单的 android 测验应用程序,有 10 个问题。

我的默认选项按钮颜色是白色。当用户从三个选项中回答一个问题时,我想通过更改选项按钮颜色(通过在 setOnClickListener 方法中使用 setBackground 颜色)向他们显示所选选项。

但我的问题是,我的第一个问题选择的选项颜色也没有选择答案就进入第二个问题。我不知道如何取消每次迭代的背景颜色。

提前致谢!!!

    Option1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            selected_option = 0;
            question_id = 1;
            Option1.setBackgroundColor(R.color.Yellow);
            updateSelectedAnswer(selected_option, question_id);
        }
    });

【问题讨论】:

  • 您应该使用 StateListDrawable,而不是在代码中手动执行此操作。

标签: java android android-layout android-button


【解决方案1】:

我们可以定义ColorStateList resource

您可以使用以下方式进行操作(根据您的需要随意更改颜色):

res/color/button_background_selector.xml中创建一个文件:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:color="@android:color/red" /> <!-- pressed -->
    <item android:state_focused="true"
          android:color="@android:color/blue" /> <!-- focused -->
    <item android:state_hovered="true"
          android:color="@android:color/green" /> <!-- hovered -->
    <item android:color="@android:color/yellow" /> <!-- default -->
</selector>

然后,如下使用:

<Button
    ...
    android:background="@color/button_background_selector" />

【讨论】:

    【解决方案2】:

    当您在此之前显示下一个问题时,请更改按钮的颜色,如下面的代码... Option1.setBackgroundColor(R.color.white);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      相关资源
      最近更新 更多