2010-11-20 26 views
17

私はEditTextコントロールを持っています。 私はそれをタップするとソフトキーボードがポップアップしますが、 "enter/ok/return"を押すとEditTextコントロールにフォーカスとキーボードがまだアップしています。
ソフトキーボードを閉じてフォーカスを削除するにはどうすればよいですか?Androidでキーボードのフォーカスを解除してキーボードを削除するにはどうすればよいですか?

答えて

1

レイアウト内の別の要素でSetFocus()を試してみることができます。

あなたはキーボード自体の「入力/ OK /戻る」ボタンについて話している場合は、別の要素のときにSetFocus()を知るためにEditText制御にKeyListenerを設定する必要があります。レイアウトXMLファイルで

+0

私は、これは多くの人々によって与えられたソリューションであることを理解しますが、私はそれが好きではありません。なぜならinput.clearFocus()の代わりに単純に働いているからです。その入力からフォーカスをクリアする)、別のものにフォーカスを設定する必要があります。それはちょうど直観に反しているようです。 – marienke

11

、あなたのEditTextにimeOptionを指定:

android:imeOptions="actionGo" 

次に、活動のjavaファイルであなたのEditTextに

mYourEditTextがのEditTextです
mYourEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if (actionId == EditorInfo.IME_ACTION_GO) { 
       // hide virtual keyboard 
       InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(mYourEditText.getWindowToken(), 0); 
       return true; 
      } 
      return false; 
     } 
    }); 

をアクションリスナーを追加オブジェクト

+0

ありがとうございます。しかし、imeOptをレイアウトやedittextに書くのに適していますか? と私はEditorInfo、任意のアイデアでエラーを得た? – carefacerz

+0

EditorInfoについて説明できますか? – carefacerz

+0

これはキーボードを閉じますが、すべての場合にフォーカスを削除しません。 IE androidは、フォーカスできる最初の利用可能なビューにフォーカスを要求します。 – lostintranslation

12
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(editTextField.getWindowToken(), 0); 
+1

これは、キーボードを非表示にします。フォーカスを削除しません。 – lostintranslation

2
private void hideDefaultKeyboard() { 
    activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 
    //you have got lot of methods here 
} 
1

あなたのEditText XMLを持っていることを確認します。次に

android:id="@+id/myEditText"  
android:imeOptions="actionDone" 

(Kotlinと、およびフラグメントから)あなたのEditTextにリスナーを設定する:

myEditText.setOnEditorActionListener({ v, actionId, event -> 
      if (actionId == EditorInfo.IME_ACTION_DONE) { 
       myEditText.clearFocus() 
       val imm = activity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager 
       imm.hideSoftInputFromWindow(view!!.windowToken, 0)  
      } 
      false 
     }) 
関連する問題