1

プロパティを持つ EditText を含む動的に作成された PopupWindow:

popup.setTouchable(true);  
popup.setFocusable(false); 

強制的にキーボードを表示する:

InputMethodManager inputMgr = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMgr.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
inputMgr.showSoftInput(root, InputMethodManager.SHOW_IMPLICIT);

キーボードを表示しますが、キーボードからの入力を受け取りません (つまり、キーを押してもテキスト エディターにテキストが追加されません)。カーソルが点滅しているため、テキスト エディターが選択されます。

外側をクリックしたときに PopupWindow を閉じたくないので、Focusable を false に設定しました。キーボードを機能させるにはどうすればよいですか?

4

2 に答える 2

2

あなたはメソッドでそれをすべて行うことができますPopupWindow

  1. InputMethodManagerソフトキーボードを強制的に表示する必要はありません。

    // Shows soft keyboard if it is not already visible.
    popup.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
    
  2. 次に、キーボード操作を許可する必要があります。

    // Allows interaction with the soft keyboard.
    popup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
    
  3. また、外部タッチの動作を変更するためにフォーカス可能性を変更する必要はありません。

    // PopupWindow ignores outside touches.
    popup.setOutsideTouchable(false);
    
于 2012-10-24T04:11:03.057 に答える
0

私は、Focusable を false に設定すると、強制的にキーボードを上げたためにキーボードが上がっていると思われますが、実際にはそのフィールドと通信していません。ポップアップ フィールドを Dialog をテーマにしたアクティビティにする必要があります。これにより、同じ効果が得られ、フォーカス可能なものをいじる必要はありません。

于 2012-06-08T23:17:56.097 に答える