2

こんにちは、画面に 2 つの編集テキスト ボックスがあります。編集テキストにフォーカスがある場合にのみ、横向きのサポートを有効にしています。ユーザーがソフトキーボードの完了ボタンを押したときに同じことを無効にします。ユーザーは最初の編集テキストに値を入力し、次のボタンを押します。次に、2番目の編集テキストに値を入力し、「完了」ボタンを押します。 2 番目の edittext.i から強制的にフォーカスを失うには、clearFocus() と button.requestFocus() を試しましたが、役に立ちませんでした。以下は私のコード スニペットです。

@Override
public boolean onEditorAction(TextView view, int actionId, KeyEvent event) {
    if (actionId == EditorInfo.IME_ACTION_SEND
            || actionId == EditorInfo.IME_ACTION_DONE
            || actionId == EditorInfo.IME_ACTION_GO
            || event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {

    ((Activity) context).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
     InputMethodManager imm = (InputMethodManager) context
               .getSystemService(Context.INPUT_METHOD_SERVICE);
     if (imm != null) 
     imm.hideSoftInputFromWindow(view.getWindowToken(), 0);

     return true;
    }
    return false;
}
@Override
public void onFocusChange(View v, boolean hasFocus) {
    if(hasFocus)
    ((Activity) context).setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}

「完了」ボタンをクリックした後、ユーザーが 2 番目の編集テキストをクリックすると、コントロールが onFocusChange イベントに到達しません。私を助けてください

4

2 に答える 2

2

この質問に対する受け入れられた回答に従ってください。OnEditorAction メソッドでの処理が終了したら、そのダミー レイアウトにフォーカスを設定するだけです

于 2012-08-16T12:35:01.823 に答える
0

If I understand correctly, you want to close the keyboard when the "done" button is pressed? If so, try adding this line to its onClickListener:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
于 2012-08-16T12:37:58.723 に答える