代码之家  ›  专栏  ›  技术社区  ›  Bazouk55555

button.setEnabled(false)不会使按钮变灰

  •  1
  • Bazouk55555  · 技术社区  · 6 年前

    我有一个 Button 在我的申请中。当我使用 setEnabled(false) 在它上面,它变成灰色。但是,如果我首先修改 纽扣 然后打电话 setEnabled(假) 它不会变灰(但是 纽扣 未启用)。为什么会这样?我怎样才能让它变灰,无论发生什么事?

    3 回复  |  直到 6 年前
        1
  •  1
  •   Bö macht Blau    6 年前

    为什么会这样

    通常情况下, Button 是一个 ColorStateList :特定颜色被分配到不同的状态,如“启用”或“禁用”(可能的状态取决于小部件的类型)。如果状态更改,运行时将相应地更改背景颜色。

    你提供了一种单一的颜色作为 按钮 的背景,因此无论 纽扣 是。

    我怎么能让它变灰呢,不管发生什么事?

    创建包含 色彩学家 (例如以下内容 guide )并将其用作可绘制的背景。

        2
  •  1
  •   samaromku    6 年前

    您的问题有几个决定: 最简单的方法是:更改按钮的背景。 或者可以使用选择器:

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:state_enabled="false"
            android:color="#9e9e9e"
            />
        <item
            android:state_enabled="true"
            android:color="#56934d"
            />
    </selector>
    
        3
  •  1
  •   Nero    6 年前

    在我看来,最简单的解决方案是在你的活动中设置按钮的背景。如下所示:

    button.setAlpha(.5f);
    button.setClickable(false);
    

    .5f alpha相当于灰色禁用按钮。如果按钮的背景是图像,它通常很有用。