我的申请中有一个Button
。当我在其上使用setEnabled(false)
时,它变成灰色。但是,如果我先修改Button
的背景,然后在其上调用setEnabled(false)
,它不会变成灰色(但是Button
未启用)。为什么会这样,无论发生什么情况我怎么都可以将其变成灰色?
答案 0 :(得分:1)
针对您的问题有两个决定: 最简单:更改按钮的背景。 或者您可以使用选择器:
<?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>
答案 1 :(得分:1)
我认为,最简单的解决方案是在活动中设置按钮的背景。如下所示:
button.setAlpha(.5f);
button.setClickable(false);
.5f alpha等效于灰色的禁用按钮。如果按钮的背景是图片,通常会很有用。
答案 2 :(得分:1)
那是为什么
通常,Button
的背景是ColorStateList
:将特定的颜色分配给不同的状态,例如“启用”或“禁用”(可能的状态取决于窗口小部件的类型)。如果状态发生变化,则运行时会相应地更改背景的颜色。
您提供了一种单色作为Button
的背景,因此无论Button
的当前状态如何,都将使用它。
无论发生什么情况如何将其设为灰色?
创建一个包含ColorStateList
的可绘制资源(例如下面的guide)并将其用作背景可绘制对象。