如何在android服务添加的浮动视图中显示editText上的键盘
我有一项服务,可以在其他应用的前台添加和显示视图。视图中有一个编辑文本。我希望能够在焦点和失去焦点时键入如何在android服务添加的浮动视图中显示editText上的键盘,android,service,view,android-softkeyboard,floating,Android,Service,View,Android Softkeyboard,Floating,我有一项服务,可以在其他应用的前台添加和显示视图。视图中有一个编辑文本。我希望能够在焦点和失去焦点时键入editText,任何键入的内容都可以在后台应用程序上。我这里有代码,但我无法设置软键盘可见。不过,我可以用硬件键盘打字。怎么了 edtTextInput.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(
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);
请尝试
InputMethodManager.showSoftInput(View,int)
和InputMethodManager.HideOffInputFromWindow(IBinder,int)
您好,您可以在需要时尝试下面的“我的代码”隐藏或显示软键盘
//hide keyboard
EditText myEditText = (EditText) findViewById(R.id.myEditText); //ref to your EditText
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); //hide keyboard
//显示键盘
myEditText.postDelayed(new Runnable() {
@Override
public void run() {
InputMethodManager keyboard = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.showSoftInput(myEditText, 0);
}
},50);
也许我已经很晚了,但还是有解决办法的。你可以找到解决办法
这是我自己提出并回答的。我尝试:imm.showsoftwintput(edtTextInput,InputMethodManager.SHOW_FORCED)inside if(hasFocus){};但是键盘不显示。第一步是首先显示键盘。请记住,这是一个服务类,因此可能与活动有点不同。我在平板电脑(一种真正的设备)上测试了代码。我在第2部分中添加了更多关于如何添加视图的代码,可能对您有所帮助。您是否在OnFocusChange()中看到输出日志?未显示软键盘;那是放在课堂上的