当加载片段(包括edittext)时,我一直在尝试自动显示键盘,并专注于编辑文本。
我尝试过使用:
editTextPrice.requestFocus();
InputMethodManager imgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imgr.showSoftInput(getView(), InputMethodManager.SHOW_IMPLICIT);
但是第一次加载片段时这不起作用。焦点已设置,我可以看到光标,但没有键盘出现。如果我关闭片段并再次添加它就可以了。
如果尝试从post()到使用处理程序将其推迟到onResume,等等。
有人知道可能导致这种情况发生的原因吗?
提前致谢。
祝你好运
答案 0 :(得分:2)
让我解释一下为什么加载片段时键盘没有打开,视图无法获得焦点,因此我们需要在单独的线程中将焦点设置到视图,然后在打开keyBoard之后
void showKeyboard(Context mContext, View view)
{
if (mContext != null && view != null && view.requestFocus())
{
InputMethodManager inputMethodManager = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
}
}
以上功能是打开键盘
editTextPrice.postDelayed(() -> {
editTextPrice.requestFocus();
showKeyboard(getContext(), editTextPrice);
}, 300);
答案 1 :(得分:0)
android:focusable="true"
android:focusableInTouchMode="true"
和
EditText yourEditText= (EditText) findViewById(R.id.yourEditText);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);
答案 2 :(得分:0)
您尝试使用以下2种功能:
fun hideKeyBoard(context: Context, view: View) {
val inputMethodManager = context.getSystemService(
Activity.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.hideSoftInputFromWindow(view.windowToken, 0)
}
fun showKeyBoard(context: Context, view: View) {
val inputMethodManager = context.getSystemService(
Activity.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
}
答案 3 :(得分:0)
不要从Java代码请求焦点。像
这样从xml本身进行操作android:focusable="true"
也在清单文件中执行以下操作
<activity android:name=".YourActivity"
android:windowSoftInputMode="stateAlwaysVisible" />