33

在android中,我们如何使设备键盘在应用程序中始终可见?顶部显示应用程序想要呈现的内容,底部始终显示键盘。

4

3 回答 3

47

在 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

于 2009-10-02T14:51:21.993 回答
12

您的布局中必须有一个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);
    }
}

onKeyPreIme() - Android 开发者

于 2012-09-03T07:42:55.947 回答
2

我找到了一种方法,可以在我myEditText的课程领域进行编辑后保持软键盘可见EditText。诀窍是覆盖该onEditorAction方法,使其返回true

  myEditText.setOnEditorActionListener(new OnEditorActionListener() {                     
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
      return true;
    }       
  });

否则只有在“完成”键单击( )之后才onEditorAction返回,否则trueIME_ACTION_DONEfalse

  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到清单文件有助于在活动开始时显示软键盘,但它并不能阻止它在编辑后单击“完成”键时再次消失。

于 2014-02-18T18:26:40.970 回答