昨天我試圖解決我的按鈕禁用並啓用它們後沒有給出任何可見反饋的問題。 my problem如何在改變Backgroundcolor後從無邊界按鈕獲得反饋? selectableItemBackground
但答案並不符合我的意願,這個按鈕應該如何。最後,我發現我用自己的按鈕製作了自己的按鈕,而不是使用按鈕。 但我認爲我不想改變我的按鈕。 所以我希望我會在你的幫助下找到另一種方式。
知道的importaned的事情是,我改變了股票的按鈕,它的方式是discriped她:How to create standard Borderless buttons
我在XML按鈕:
<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" />
我與API的14個工作所以API 11 isue不是問題。
我有兩種方法正在禁用和啓用我的按鈕。 啓用它們後,它們仍然是功能,但不提供任何觸摸反饋。
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);
// **Her is the problem**
// **if tried diffrent things**
// **First try: (brings back the old color but not the feedback)**
// buttonDrink.setBackgroundColor(android.R.attr.selectableItemBackground);
// **Second try: (App crashes. Why? i don't know. The discription of selectableItemBackground says it is a drawable...)**
//buttonDrink.setBackgroundDrawable(getResources().getDrawable(android.R.attr.selectableItemBackground));
// **Third try: (eclips isn't accepting this because the attribut is a int and not a drawable)**
//buttonDrink.setBackgroundDrawable(android.R.attr.selectableItemBackground);
//**Fourth try: (brings back a feedback but changes the lock, feedback color...)**
TypedArray a = getBaseContext().obtainStyledAttributes(new int[]{android.R.attr.selectableItemBackground});
Drawable backdraw = a.getDrawable(0);
buttonDrink.setBackgroundDrawable(backdraw);
buttonEat.setBackgroundColor(android.R.attr.selectableItemBackground);
buttonWash.setBackgroundColor(android.R.attr.selectableItemBackground);
buttonSleep.setBackgroundColor(android.R.attr.selectableItemBackground);
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));
}
但必須有一種方法可以讓這些按鈕從selectableItemBackground返回funktionality。
這個問題似乎是背景顏色的變化。 有沒有人有任何想法?請讓我知道
我死定了自己製作的自定義按鈕,因爲我從來沒有做過它。但是,對於你的代碼示例,我只是複製它們來嘗試它是否可以在那麼簡單的一年工作,但它確實如此。 謝謝,現在我學到了新東西,可以繼續前進:) – Spen