我在视图中有一个按钮,我偶尔会调用setEnabled()
来禁用并重新启用它。工作得很好。
然后我为它的android:background
元素创建了一个xml文件,以便将它调整起来,以及它被禁用时的预期外观退出。它现在总是看起来已启用,即使它不是。
我非常愿意并且能够创建一个<selector>
,当它被禁用以获得预期的行为时会启动,但我不知道究竟是什么。我相信有一些文字颜色变化,但不确定是什么。
如果必须,我会将阿尔法降低到“明显禁用”的状态,但我想回到之前的股票行为。希望有人可以告诉我,当一个View被禁用时(事件处理除外),究竟会发生什么?
这是<layer-list>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/gold"
android:gravity="fill" />
<item>
<shape android:shape="rectangle">
<stroke
android:width="1dp"
android:color="#000000" />
</shape>
</item>
</layer-list>
我想知道当上面的代码片段不存在时,android对禁用按钮的作用。即,在禁用时默认恢复原始的Android行为。
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false">
???????
</item>
答案 0 :(得分:0)
您可以尝试使用以下代码:
selector.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_disable" android:state_enabled="false"/>
<item android:drawable="@drawable/btn_enabled" android:state_enabled="true"/>
</selector>
将选择器放在按钮的背景中:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/selector" />
答案 1 :(得分:0)
这是一种方法。 每当您启用按钮时,您都可以添加
button.setEnabled(true);
button.setBackground(getDrawable(R.drawable.backgroundofbuttonwhenenabled));
每当您禁用该按钮时,您都可以添加
button.setEnabled(false);
button.setBackground(getDrawable(R.drawable.backgroundofbuttonwhendisabled));