在android中,我们如何让设备键盘在应用程序中始终可见?顶部显示应用程序要呈现的内容,底部显示键盘。
答案 0 :(得分:46)
在AndroidManifest.xml文件中为您的活动添加android:windowSoftInputMode =“stateAlwaysVisible”:
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysVisible" />
在我的测试应用程序中,这显示了应用程序启动时的键盘,虽然它没有固定在那里但可以通过按后退按钮来解除。
要确保键盘始终可见,您可能必须创建自己的键盘作为应用程序UI的一部分。这是一个教程,向您展示如何使用KeyboardView执行此操作:http://www.fampennings.nl/maarten/android/09keyboard/index.htm
答案 1 :(得分:10)
您的布局中必须有EditText
,并且需要扩展EditText
基类。然后覆盖onKeyPreIme()
方法,并返回 True 。现在您的键盘将始终可见,并且无法通过返回键解除。
警告:由于您的onKeyPreIme()
方法返回true
,您无法使用返回键退出应用。
示例:
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);
}
}
答案 2 :(得分:1)
我找到了一种方法,可以在我myEditText
类EditText
字段中进行编辑后保持软键盘可见。诀窍是覆盖onEditorAction
方法,使其返回true
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
return true;
}
});
或者仅在“完成”按键点击(IME_ACTION_DONE
)之后onEditorAction
返回true
,否则false
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
方法上的this answer)
将android:windowSoftInputMode="stateAlwaysVisible
添加到清单文件有助于在活动开始时显示软键盘,但是在编辑后单击“完成”键时,它不会阻止它再次消失。