在安卓设备上,我们如何让应用程序中的设备键盘始终可见?顶部显示应用程序要呈现的内容,底部始终显示键盘。
在AndroidManifest.xml文件中的你的Activity上添加android:windowSoftInputMode="stateAlwaysVisible":
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysVisible" />
在我的测试应用中,尽管它并未固定在那里,但按下返回按钮就可以消除,但这会显示键盘。您的布局中必须拥有一个EditText
,并且该控件需要继承EditText
基类。然后重写onKeyPreIme()
方法,并返回True。现在您的键盘将始终可见,并且无法通过"back"键关闭。
注意:由于您的onKeyPreIme()
方法返回true
,因此无法使用"back"键退出应用程序。
示例:
public class CustomEdit extends EditText {
public CustomEdit(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
Log.e("Log", "onKeyPreIme");
return true;
//return super.onKeyPreIme(keyCode, event);
}
}
我发现一种对我有效的方法,可以在我的EditText
类中的myEditText
字段进行编辑后保持软键盘可见。诀窍是重写onEditorAction
方法,以便返回true
。
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
return true;
}
});
IME_ACTION_DONE
)后,onEditorAction
才返回 true
,否则返回 false
。请保留 HTML 标签。 myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(actionId==EditorInfo.IME_ACTION_DONE){
Log.i(LOG_TAG, "IME_ACTION_DONE");
return true;
}
return false;
}
});
onEditorAction
方法的此答案)android:windowSoftInputMode="stateAlwaysVisible
添加到清单文件中有助于在活动开始时显示软键盘,但无法防止在编辑后单击“完成”键后软键盘再次消失。