通过一个按钮,我可以使用 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" />
最佳答案
这是因为您将背景资源设置为透明,而不是在布局中应用的背景资源作为这些按钮的可绘制背景。重新应用这些背景可绘制对象,您将再次获得触摸反馈。这应该可以解决你的问题。
在未来的实现中,您可以直接在可绘制的列表选择器本身中提供启用/禁用的背景资源。使用 state_enabled = true/false。这消除了在代码中执行所有这些操作的需要。
关于java - setEnabled(false) -> (true)/selectableItemBackground 作为可绘制后没有可见的按钮反馈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16748290/