2011-11-24 97 views
4

當文本爲空時,我們要禁用按鈕(這是如何設置肖像模式)任何想法?當使用imeOption = actionSend時,禁用發送按鈕當EditText爲空

編輯:我不認爲這很清楚,但我可以啓用/禁用我自己的按鈕。但是,當使用橫向模式時,當彈出鍵盤時,屏幕被自己的特定文本區域覆蓋按鈕(因此imeOption)所以我沒有問題啓用/禁用我有的按鈕。這是這個Android按鈕,我想禁用文本區域爲空時..

+0

您可以設置可見View.INVISIBLE並在此改變onconfigurationChange重新設置其狀態,如果你需要 –

+0

我如何獲得一個句柄上發送按鈕..這是一個OS呈現按鈕。我認爲屏幕是外我的活動範圍.. –

+0

http://stackoverflow.com/questions/2979441/android-how-to-enable-my-button-back-if-edittext-is-not-empty – Synxmax

回答

12

添加一個TextChangedListener這將得到只要EditText內部的文本發生變化就會調用。

message.addTextChangedListener(new TextWatcher() { 

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 
    public void onTextChanged(CharSequence s, int start, int before, int count) {} 

    public void afterTextChanged(Editable s) { 
     if (s == null || s.length() == 0) { 
      send.setEnabled(false); 
      message.setImeOptions(EditorInfo.IME_FLAG_NO_ENTER_ACTION); 
     } 
     else { 
      send.setEnabled(true); 
      message.setImeOptions(/* whatever you previously had */); 
     } 
} 

或者,你也可以讓你的班級實現TextWatcher接口,這使得代碼更清潔一些。

public class MyDialogFragment implements TextWatcher { ... } 
+0

嘿,由於某種原因,這並沒有工作,但它有點帶領我走了正確的道路..我看到了該行動採取了該發送按鈕,基本上什麼也沒做,如果文本字段爲空 –

+0

這很可能你必須這樣以某種方式觸發刷新鍵盤,以使ime選項生效(隱藏並顯示?)。另一個好的提示是在該字符串的臨時副本上調用trim()(或使用刪除空格的regax),然後檢查長度 - 確保不發送只有空白的消息 – FunkTheMonk

+0

@FunkTheMonk就我而言瞭解你的答案,我可以使用'afterTextChanged()'來顯示和隱藏軟鍵盤上的'DONE'按鈕。對?我也嘗試禁用/啓用'NEXT'按鈕而沒有成功。你會如何做到這一點? – JJD