安卓:如何使键盘始终可见?

34

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

3个回答

48

在AndroidManifest.xml文件中的你的Activity上添加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

我尝试使用Android源代码并可以拖动键盘,但不确定应该修改哪个部分以禁止其隐藏。我正在查看LatinIME.java类下的内容。我尝试将来自Google代码的inputView添加到WindowManager.addView中。 - LittleFunny
@Simon,请查看我对答案的更新。你可能需要使用 KeyboardView。 - Intrications

12

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

onKeyPreIme() - Android developer


2

我发现一种对我有效的方法,可以在我的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添加到清单文件中有助于在活动开始时显示软键盘,但无法防止在编辑后单击“完成”键后软键盘再次消失。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接