2009-10-02 67 views

回答

39

添加机器人:windowSoftInputMode =“stateAlwaysVisible”你的活动在AndroidManifest.xml文件:

<activity android:name=".MainActivity" 
android:label="@string/app_name" 
android:windowSoftInputMode="stateAlwaysVisible" /> 

在我的测试应用程序这显示了应用程序的启动键盘虽然是不固定的,但有可以通过按下后退按钮来解除。

为了确保键盘总是可见,您可能需要创建自己的键盘为您的应用程序的用户界面的一部分。下面是一个教程,向您展示如何使用KeyboardView完成此操作:http://www.fampennings.nl/maarten/android/09keyboard/index.htm

+0

我试图使用Android源代码,并可左右,但不知道哪一部分,我应该修改从隐藏禁用它拖动键盘。我正在看LatinIME.java下的这个类。我试图将该代码中的inputView添加到WindowManager.addView。 – LittleFunny 2016-10-04 13:14:58

+0

@Simon查看我对我的答案的更新。您可能想要使用KeyboardView。 – Intrications 2016-10-05 07:20:09

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

0

我发现,工作对我来说,保持软键盘的编辑后,可见我EditText类的myEditText领域的方式。关键是要覆盖onEditorAction方法,使其返回true

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

否则只有“完成”键,点击后有onEditorAction返回trueIME_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; 
    }  
    }); 

(见this answeronEditorAction方法)

android:windowSoftInputMode="stateAlwaysVisible添加到清单文件帮助在活动开始时显示软键盘,但是在编辑后单击“完成”键时不会阻止它再次消失。