2016-04-19 75 views
0

我想傾聽AlertDialogpositive按鈕上的點擊,該按鈕通過呼叫button.setEnabled(false);而被禁用。正在監聽已禁用的AlertDialog按鈕的點擊

我該怎麼做?如果這是不可能的,是否有一個已知的解決方法?

PS。我想這樣做的原因是,當有人按下按鈕時,我想表示敬酒,並說:「你需要這樣做才能繼續」。

+0

爲什麼不在用戶完成某個任務之前隱藏該按鈕? – Eenvincible

+0

這是一個選項,但這只是讓對話變得不那麼容易理解,而我想讓它變得更容易理解(用敬酒中的提示)。你的建議與我目前所掌握的相同(隱藏與禁用)。 – Timmiej93

+0

當按鈕被禁用時,我不太瞭解如何監聽點擊。所以我想如果用戶沒有完成任務,只是不禁用按鈕,就可以顯示敬酒。 – Eenvincible

回答

0

這不是聽取點擊禁用按鈕的方法。這是一種解決方法。

我喜歡我通過改變按鈕的顏色,使它看起來像它被禁用的結果。

你想做什麼:

// Instantiate positive button 
    final Button posButton = ((AlertDialog) getDialog()).getButton(DialogInterface.BUTTON_POSITIVE); 

// Save the original button's background 
    final Drawable bg = posButton.getBackground(); 

// Set button's looks based on boolean 
    if (buttonDisabled) { 
     posButton.setTextColor(getResources().getColor(R.color.disabledButtonColor, null)); 
     // R.color.disabledButtonColor == #DBDBDB, which is pretty close to 
     // the color a disabled button gets. 
     posButton.setBackgroundColor(Color.TRANSPARENT); 
     // Color.TRANSPARENT makes sure all effects the button usually shows disappear. 
    } else { 
     posButton.setTextColor(getResources().getColor(R.color.colorPrimaryDark, null)); 
     // R.color.colorPrimaryDark is the color that gets used all around my app. 
     // It was the closest to the original for me. 
     posButton.setBackground(bg); 
     // bg is the background we got from the original button before. 
     // Setting it here also re-instates the effects the button should have. 
    } 

現在,不要忘了抓住你的按鈕操作時,它的「已禁用」

public void onClick(View v) { 
    if (buttonDisabled) { 
     // Button is clicked while it's disabled 
    } else { 
     // Button is clicked while it's enabled, like normal 
    } 
} 

這應該做的,有樂趣。