Android:如何使键盘始终可见?

时间:2009-10-02 14:03:55

标签: android keypad

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

3 个答案:

答案 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);
    }
}

onKeyPreIme() - Android developer

答案 2 :(得分:1)

我找到了一种方法,可以在我myEditTextEditText字段中进行编辑后保持软键盘可见。诀窍是覆盖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添加到清单文件有助于在活动开始时显示软键盘,但是在编辑后单击“完成”键时,它不会阻止它再次消失。