setEnabled(false)后没有可见的按钮反馈 - > (true)/ selectableItemBackground as drawable?

时间:2013-05-25 09:42:59

标签: java android button

使用一个按钮,我将使用button.setEnabled(false)禁用其他三个按钮 这很好。
再次按下此按钮时,将使用button.setEnabled(true)启用树形按钮。
他们仍然在做他们应该做的事情并且对onClickListener做出很好的回应 但是,由于启用它们,当它们被按下时,它们看不到响应。

我如何重新激活它们?
(我已经在谷歌搜索但没有找到任何东西)。


private void startSleeping()
{
    editorState.putBoolean("SLEEPING", true);
    editorState.commit();

    buttonDrink.setEnabled(false);
    buttonEat.setEnabled(false);
    buttonWash.setEnabled(false);
    buttonDrink.setBackgroundColor(getResources().getColor(R.color.darkgray));
    buttonEat.setBackgroundColor(getResources().getColor(R.color.darkgray));
    buttonWash.setBackgroundColor(getResources().getColor(R.color.darkgray));
    buttonSleep.setBackgroundColor(getResources().getColor(R.color.orange));
    buttonWash.setTextColor(getResources().getColor(R.color.lightgray));
    buttonDrink.setTextColor(getResources().getColor(R.color.lightgray));
    buttonEat.setTextColor(getResources().getColor(R.color.lightgray));
    buttonSleep.setTextColor(getResources().getColor(color.black));
}

private void stopSleeping()
{
    editorState.putBoolean("SLEEPING", false);
    editorState.commit();

    buttonDrink.setEnabled(true);
    buttonEat.setEnabled(true);
    buttonWash.setEnabled(true);
    buttonDrink.setBackgroundColor(getResources().getColor(R.color.transparent));
    buttonEat.setBackgroundColor(getResources().getColor(R.color.transparent));
    buttonWash.setBackgroundColor(getResources().getColor(R.color.transparent));
    buttonSleep.setBackgroundColor(getResources().getColor(R.color.transparent));
    buttonWash.setTextColor(getResources().getColor(R.color.white));
    buttonDrink.setTextColor(getResources().getColor(R.color.white));
    buttonEat.setTextColor(getResources().getColor(R.color.white));
    buttonSleep.setTextColor(getResources().getColor(R.color.white));
}

        <Button
            android:id="@+id/buttonEat"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?android:attr/selectableItemBackground"
            android:paddingBottom="@dimen/padding_size"
            android:paddingTop="@dimen/padding_size"
            android:text="@string/button_eat"
            android:textColor="@color/white"
            android:textColorHint="@color/white"
            android:textSize="@dimen/text_size" />

enter image description here

1 个答案:

答案 0 :(得分:1)

这是因为您将背景资源设置为透明而不是您在布局中应用的背景资源,因为背景可绘制到这些按钮。重新应用这些背景绘图,您将再次获得触摸反馈。这应该可以解决你的问题。

在未来实现的旁注中,您可以直接在drawable的列表选择器本身中提供启用/禁用的后台资源。使用state_enabled = true / false。这消除了在代码中完成所有这些操作的需要。