Kotlin中按钮状态的不同背景

问题描述 投票:2回答:2

我的项目中有一个按钮,其工作方式如下:

对于每种状态,该按钮具有3种不同的设计-禁用(state_enabled="false"),启用,按下。

如果未选择任何文件,则该按钮将保持禁用状态,并且具有特定的设计。尽管在选择文件时此按钮将变为启用状态并切换到其他设计。每次启用并按下按钮时,都可以看到按钮的突出显示颜色。

到目前为止我尝试过的:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/background_blue" android:state_enabled="true" />
    <item android:drawable="@drawable/background_blue_white" android:state_enabled="false" />
    <item android:drawable="@drawable/background_green" android:state_pressed="true" />

</selector>

我想拥有的是:

  1. 已禁用:Click here to see the disabled button-表示除非选择了文件,否则无法单击它。

  2. Enabled:Click here to see the enabled button]-表示我已选择一个文件。

  3. [Pressed:enter image description here-表示按钮是否已启用并且我按下了它。

state_enabled="false"state_enabled="true"可以正常工作,而state_pressed="true"则根本不工作。您认为我做错了什么?

[请让我知道我的解释是否复杂-我会尽力描述问题以使其尽可能地易于理解。非常感谢。祝你今天愉快!

android xml kotlin button drawable
2个回答
1
投票

您应该为此设置按钮clickable

您可以使用button.setClickable(true)进行创建(如果使用的是JAVA),也可以在.xml中添加具有android:clickable="true"的位置。

如果使用Kotlin,则添加button.clickable = true,而不是第一个使用Java代码的解决方案。

更新:您也应该尝试此操作。遵循this answer可能会有所帮助。根据该答案,您应该使所有状态保持正确的顺序。我不知道为什么,但是我认为这应该有所帮助。

尝试一下,让我知道是否对您有帮助。谢谢,祝您编程愉快!!


0
投票

也许您应该设置默认颜色。

<item android:drawable="@drawable/background_blue" android:state_enabled="true" />
<item android:drawable="@drawable/background_blue_white" android:state_enabled="false" />
<item android:drawable="@drawable/background_green" android:state_pressed="true" />
<item android:drawable="@drawable/background_blue" />

没有任何“按下”和“启用”可绘制对象的默认颜色。

© www.soinside.com 2019 - 2024. All rights reserved.