popupwindow 内の Edittext ウィジェットにソフトキーボードからテキストを入力したいのですが、いくつかの問題で苦労しています。私のアクティビティはゲームカード テーブルで、その上でいくつかのアニメーションを有効にします。ゲームテーブルには、いくつかのボタンがあります。プレイヤーが特定のボタンをクリックすると、ポップアップウィンドウが表示されます。問題は、プレーヤーがポップアップ ウィンドウ内の Edittext にテキストを入力できないことです。これについていくつかの同様の問題を見つけました。最も一般的な提案は次のとおりです。
Popupwindow.setFocusable(true)
この設定でEdittextに普通に入力できるようになりました。ただし、これによりメイン UI スレッドがブロックされ、ゲーム テーブルのアニメーションが停止します。これはユーザー エクスペリエンスに悪いため、発生させたくありません。以下のコード スニペットを使用して、edittext にフォーカスがあるときにソフトキーボードを表示することができます。しかし、キーボードからedittextまで何も入力できません。さらに、popupwindow を閉じると、キーボードがまだ表示され、閉じません。
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
InputMethodManager imm = (InputMethodManager)ct.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
imm.showSoftInput(v, InputMethodManager.SHOW_IMPLICIT);
}
}
});
mainUI スレッドでアニメーションをブロックせずに Edittext にデータを入力する方法を見つけてください。別の方法は、カスタム ダイアログを使用することですが、役に立ちません。ダイアログを使用すると、mainUI スレッドもブロックされます。ご提案いただきありがとうございます。