2011-11-24 11 views
4

テキストが空の場合、ボタンを無効にしたい(これはポートレートモードに設定されています)imeOption = actionSendを使用しているときにEditTextが空のときに送信ボタンを無効にする

編集:私は自分のボタンを有効/無効にすることができます。しかし、風景モードを使用しているときにキーボードがポップアップすると、画面にはアンドロイド固有のテキストエリアが表示されますボタン(これはimeOption)なので、私が持っているボタンを有効/無効にする問題はありません。テキストエリアが空のときに無効にしたいAndroidボタンです。

+0

あなたはそれはOSレンダリングボタンです。..可視View.INVISIBLEを設定し、私はその送信ボタンのハンドルを取得するにはどうすればよい –

+0

が必要な場合onconfigurationChangeは再びその状態を設定オーバライドすることができます..私はその画面外だと思います私の活動範囲の.. –

+0

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

答えて

12

TextChangedListenerEditText内のテキストが変更されたときに呼び出されます。

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

それはあなたがそうする必要がありそうですmeehowは、imeオプションを有効にするためのキーボードのリフレッシュをトリガーします(hide&show?)。もう一つの良いヒントは、文字列の一時的なコピーのtrim()(または空白を削除するregaxを使用)を呼び出して長さをチェックすることです。空白だけのメッセージを送信しないようにしてください。 – FunkTheMonk

+0

@FunkTheMonkあなたの答えを理解して、 'afterTextChanged()'を使ってソフトキーボードの 'DONE'ボタンを表示したり隠したりすることができました。右?私はまた、成功せずに 'NEXT'ボタンを無効/有効にしようとしました。あなたはどうしますか? – JJD

関連する問題