2016-09-07 10 views
0

私はチャットアプリを開発しています。メッセージ編集中(EditText内)にソフトキーボードでEnterキーを押す方法を探しています。目的はテキストを直接送信することです。 明らかに私は "SEND"ボタンも実装しています。ソフトキーボード「ENTER」をキャッチする方法

二つの試み:

  1. editText.addTextChangedListener(new TextWatcher()..

    の検索結果を使用して:私はonTextChangedに "\ n" は文字のいずれかを取得し、
    コールバックをafterTextChanged。私はこのキャラクターを "削除"してチャットを送ることができましたが、私はこの方法で
    が好きではありません。

  2. editText.setOnEditorActionListener(new TextView.OnEditorActionListener()..

    の検索結果を使用して:それは動作しません。

もっと良い解決策はありますか?

+2

可能な重複質問/ 1489852/android-handle-enter-in-an-edittext – kgandroid

+0

上記のリンクで、選択された回答抽出: "setOnEditorActionListener()メソッド、すべてTextView"ですが、私はEditTextを使用しています – MBDevelop

+0

有名なチャットアプリケーションですか?私はちょうどFBのメッセンジャー、Whatsapp、IMOとスカイプを見ました。それらはすべてアプリ内に別の送信ボタンを提供します。 @Amyによって提案されたように 'android:imeOptions =" actionSend "を追加すると、あなたが探しているもの(私は一度も試したことがありません)を達成する手段が得られますが、チャットに新しい行を追加することはできません。 – Abbas

答えて

0

試してみてください。

editText.setOnKeyListener(new OnKeyListener() 
{ 
    public boolean onKey(View v, int keyCode, KeyEvent event) 
    { 
     if (event.getAction() == KeyEvent.ACTION_DOWN) 
     { 
      switch (keyCode) 
      { 
       case KeyEvent.KEYCODE_DPAD_CENTER: 
       case KeyEvent.KEYCODE_ENTER: 
        //Perform Your action 
        return true; 
       default: 
        break; 
      } 
     } 
     return false; 
    } 
}); 
+0

しかし、Android Developersから: "ハードウェアキーイベントがこのビューにディスパッチされたときに呼び出されるコールバックのインターフェース定義。キーイベントがビューに送られる前にコールバックが呼び出されます。ソフトウェア入力方法にはこのリスナーを起動する義務はありません。私はソフトキーボードについてのアドバイスが必要です。 – MBDevelop

+0

なら、あなたは 'android:imeOptions =" actionSend "'をxmlで使うことができます。 – Amy

+0

それは動作しません – MBDevelop

0

私が入力したソフトキーボードをキャッチするためにこれを使用し、それは素晴らしい作品が、私はこれがあなたのために適しているかわからない:http://stackoverflow.com/の

editText.setOnKeyListener(new View.OnKeyListener() { 
    @Override 
    public boolean onKey(View view, int keyCode, KeyEvent keyEvent) { 
     if (keyCode == KeyEvent.KEYCODE_ENTER && keyEvent.getAction() == KeyEvent.ACTION_UP) { 
      //do something. 
      return true; 
     } 
     return false; 
    } 
}); 
関連する問題