在android中,我们如何使设备键盘在应用程序中始终可见?顶部显示应用程序想要呈现的内容,底部始终显示键盘。
3 回答
在 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
您的布局中必须有一个EditText
并且需要扩展EditText
基类。然后 OverrideonKeyPreIme()
方法,并返回True。现在您的键盘将始终可见,并且无法通过 Back 键关闭。
注意:由于您的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);
}
}
我找到了一种方法,可以在我myEditText
的课程领域进行编辑后保持软键盘可见EditText
。诀窍是覆盖该onEditorAction
方法,使其返回true
myEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
return true;
}
});
否则只有在“完成”键单击( )之后才onEditorAction
返回,否则true
IME_ACTION_DONE
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
)
添加android:windowSoftInputMode="stateAlwaysVisible
到清单文件有助于在活动开始时显示软键盘,但它并不能阻止它在编辑后单击“完成”键时再次消失。