我有一项服务,在其他应用程序的前台添加并显示视图。视图中有一个editText。我想在输入焦点时输入editText
,输入焦点时输入在后台应用程序中的任何内容。我在这里有代码,但我无法设置可见的软键盘。但是,我可以使用硬件键盘输入。哪里不对?后来加入的如何在android服务添加的浮动视图内的editText上显示键盘
edtTextInput.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
Log.d("", "Has focus");
mParams1.flags = WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
mWindowManager.updateViewLayout(
mAssistiveView1, mParams1);
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
} else {
Log.d("", "Lost focus");
mParams1.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mWindowManager.updateViewLayout(
mAssistiveView1, mParams1);
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, 0);
}
}
});
}
第2部分代码显示视图是如何补充说:
mParams1.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE ;
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
mWindowManager.addView(ParentView, mParams1);
第一步是首先显示键盘。然后我们可以稍后解决。 – DriveCarefully
请记住这是一个服务类别,因此可能与活动有所不同 – DriveCarefully
我在平板电脑上测试了代码,这是一款真正的设备。 – DriveCarefully