2017-11-16 10 views
1

はスニペット:SearchViewは:[完了]をクリックしますボタン何も起こらないとき、ここで

searchViewEditText.setImeOptions(EditorInfo.IME_ACTION_DONE); 
     searchViewEditText.setSingleLine(true); 

その結果、完了ボタンがショーキーボード開いているとき。 OK。ここで

が起こる:

done

をしかし、私は完了ボタンをクリックしたとき何も起こりません。私はキーボードが隠れることを期待しています。

+0

は[https://stackoverflow.com/a/5677676/5308778](これに通過しますhttps://stackoverflow.com/a/5677676/5308778)、ここで完了ボタンを押した後にコールバックを受けることができます。 – Lucky

答えて

1

あなたがこれを使用することができます(アクションがのEditTextで実行されるときに呼び出される特殊なリスナーを設定し)、それは両方のDONEとRETURNの作品:

max.setOnEditorActionListener(new OnEditorActionListener() { 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) { 
      Log.i(TAG,"Enter pressed"); 
     }  
     return false; 
    } 
}); 
0

私はあなたが閉鎖しなければならないことだと思いますプログラム的にキーボード。そのためには、TextViewのリスナーに次のロジックを追加します。

editText = (EditText) findViewById(R.id.edit_text); 

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_DONE) { 
      InputMethodManager inputMethodManager = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); 
       //Replace <<active view>> With the active view 
       inputMethodManager.hideSoftInputFromWindow(<<active view>>.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 
      } 
      return false; 
     } 
    }); 

を私は願っています、これはあなたを助け:)

関連する問題