我试图在一个Activity中强制打开Soft Keyboard并抓取输入的所有内容,因为我想自己处理输入,我没有EditText.目前我已经尝试了这个,但它不起作用.我想在mAnswerTextView下打开Soft Keyboardto(注意:它是TextView而不是EditText).
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// only will trigger it if no physical keyboard is open
mgr.showSoftInput(mAnswerTextView, InputMethodManager.SHOW_IMPLICIT);
Run Code Online (Sandbox Code Playgroud)
Dmi*_*try 129
试试这个强制打开软键盘:
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
Run Code Online (Sandbox Code Playgroud)
然后你可以使用这段代码来关闭键盘:
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(_pay_box_helper.getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)
Yon*_*lan 15
您可能需要具有某种可编辑的文本区域才能获得焦点.但是,您可能有一个不可见或透明背景,没有光标.您可能需要使用视图的可聚焦设置.
使用TextWatcher检查编辑到的EditText与addTextChangedListener,或者如果你需要一个甚至下位钩,其setOnKeyListener()方法设置的TextView的主要听众.请参阅KeyListener文档.
使用此调用强制打开软键盘:
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE))
.showSoftInput(myEditText, InputMethodManager.SHOW_FORCED);
Run Code Online (Sandbox Code Playgroud)
这个关闭它:
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)
请注意,这是不推荐的 - 强制打开键盘有点乱.您的用例是什么,真正需要您在没有正常编辑框的情况下接受用户输入,并且需要逐个键地输入用户输入而不回复它?
小智 7
强制键盘打开我使用过
this.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
Run Code Online (Sandbox Code Playgroud)
它对我有用.
有时其他答案不起作用.
这是另一种方式..
它将通过监听窗口焦点强制键盘显示活动开始的时间.onWindowFocusChanged()它将清除并请求EditText的焦点,然后将软输入模式设置为可见,并将选择设置为框中的文本.如果您从活动中调用它,这应始终有效.
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
mEditText.clearFocus();
mEditText.requestFocus();
getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
mEditText.setSelection(mEditText.getText().toString().length());
}
}
Run Code Online (Sandbox Code Playgroud)
你可能还需要
mEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mEditText, InputMethodManager.SHOW_IMPLICIT);
}
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:我也看到键盘未在嵌套片段中打开,请注意这些情况.
| 归档时间: |
|
| 查看次数: |
55066 次 |
| 最近记录: |