【问题标题】:Change ImageButton Drawable when state is disabled Android禁用状态时更改 ImageButton Drawable Android
【发布时间】:2018-03-26 12:56:18
【问题描述】:

我想创建一个可绘制资源来更改禁用时图像按钮中使用的图像。

我创建了一个可绘制资源

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <bitmap android:src="@drawable/enabled_image" />
    </item>
    <item android:state_enabled="false">
        <bitmap android:src="@drawable/disabled_image" />
    </item>
</selector>

然后我在android:src="@drawable/resource" 中引用它。当我调用ImageButton.setEnabled(false) 时,按钮不可点击,但样式不会改变。

android:background 用于其他东西(半径颜色等)

【问题讨论】:

    标签: android android-layout android-drawable android-imagebutton


    【解决方案1】:

    试试这个

    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_enabled="false" android:drawable="@drawable/disabled_backgroungd"/>
        <item android:state_pressed="false"
            android:drawable="@drawable/normal_backgroungd" />
        <item android:state_pressed="true"
            android:drawable="@drawable/backgroungd_selected" />
        <item android:state_enabled="true" android:drawable="@drawable/normal_backgroungd"/> 
    </selector>
    

    编辑State List

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android"
        android:constantSize=["true" | "false"]
        android:dither=["true" | "false"]
        android:variablePadding=["true" | "false"] >
        <item
            android:drawable="@[package:]drawable/drawable_resource"
            android:state_pressed=["true" | "false"]
            android:state_focused=["true" | "false"]
            android:state_hovered=["true" | "false"]
            android:state_selected=["true" | "false"]
            android:state_checkable=["true" | "false"]
            android:state_checked=["true" | "false"]
            android:state_enabled=["true" | "false"]
            android:state_activated=["true" | "false"]
            android:state_window_focused=["true" | "false"] />
    </selector>
    

    编辑

    drawable 中项目状态的顺序有所不同。

    【讨论】:

    • 该解决方案运行良好。我还发现各州的顺序有所不同。您能否提供订单明细或链接以确保问题的原因是明确的。
    【解决方案2】:
    if(!ImageButton.isEnabled())
    {
         //set the drawable         
    }
    

    【讨论】:

    • 在问题中我显然在使用
    • 虽然这可能会回答 OP 的问题,但几句话的解释将有助于当前和未来的用户更好地理解您的答案。
    猜你喜欢
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多