我想从软键盘输入文本到弹出窗口内的 Edittext 小部件,但我遇到了一些问题。我的活动是一张游戏卡桌,并在上面启用一些动画。在游戏表中,有一些按钮。如果玩家点击某个按钮,将显示一个弹出窗口。问题是播放器无法在弹出窗口内向 Edittext 输入文本。我发现了一些类似的问题,最流行的建议是:
Popupwindow.setFocusable(true)
使用此设置,我可以正常输入到 Edittext。但是,这会阻塞主 UI 线程并导致游戏表中的动画停止。我不希望这种情况发生,因为它不利于用户体验。当 edittext 使用下面的代码片段获得焦点时,可以显示软键盘。但是,我无法输入从键盘到编辑文本的任何内容。此外,当我关闭弹出窗口时,键盘仍然显示而不关闭。
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 线程。非常感谢您的任何建议。