【问题标题】:Android prevent keyboard from closingAndroid防止键盘关闭
【发布时间】:2012-10-12 21:55:54
【问题描述】:

是否可以阻止用户关闭软键盘。换句话说,当我的活动可见时,屏幕上的键盘(始终)可用。这可能吗?如果是这样,您将如何实现它?

【问题讨论】:

  • 在 AndroidManifest.xml 中的活动定义中添加了 android:windowSoftInputMode="stateAlwaysVisible"。还尝试了使用 InputMethodManager 的各种组合,但没有奏效。

标签: android android-layout keyboard user-input


【解决方案1】:

您需要重写onKeyUp()onKeyDown() 方法,如下所示,

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK)     
    {
        ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput
                (InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);
    }
    return super.onKeyUp(keyCode, event);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK)     
    {
        ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput
                (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
    }
    return super.onKeyDown(keyCode, event);
}

你也可以尝试任何一种方式,使用OnEditorActionListener,看看下面的代码,

EditText txtMyEdit = (EditText) findViewById(R.id.txtEdit);
txtMyEdit.setOnEditorActionListener(new OnEditorActionListener() 
{
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) 
    {
        if (actionId == EditorInfo.IME_ACTION_DONE) 
        {
            // your additional processing... 
            return true;
        } 
        else 
        {
            return false;
        }
    }
});

【讨论】:

  • 这有点用,唯一的问题是焦点的变化仍然会导致键盘被关闭。我需要键盘始终保持在屏幕上。
【解决方案2】:

无论焦点如何,这都会强制键盘显示:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(yourViewObject.getWindowToken(), 0);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 2020-11-16
    • 2020-03-07
    • 1970-01-01
    相关资源
    最近更新 更多