2012-10-23 153 views
3

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

+0

你试过了什么? – Sieryuu

+0

将Android:windowSoftInputMode =“stateAlwaysVisible”添加到AndroidManifest.xml中的活动定义中。还尝试过使用InputMethodManager的各种组合,没有任何工作。 –

回答

0

你需要重写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; 
     } 
    } 
}); 
+1

这在某种程度上起作用,唯一的问题是焦点的变化仍然会导致键盘被解雇。我需要键盘始终保持在屏幕上。 –

0

这应该强制键盘显示与焦点无关:

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