在我的安卓应用程序中,我有一个活动里面有三个EditText。我在该活动中创建了自己的数字键盘。每当我点击任何EditText时,软键盘就会弹出来。我希望永久性地阻止它在这个活动中出现,但如果用户点击一个EditText,它应该处于焦点状态,就像光标一样闪烁。你有什么思路吗?谢谢。
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
YourEditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
mgr.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
});
YourEditText.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mgr.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
});
Android Studio建议使用以下命令来防止键盘弹出。我将其放入一个函数中,并为每个EditText对象调用了该函数。
private void hideKeyboard(EditText editText){
editText.setShowSoftInputOnFocus(false);
}
不需要为每个EditText设置hideSoftInputFromWindow(),如果您将参数设置为活动的父布局,则会更好。假设活动的父布局是LinearLayout,则:
linearLayout = (LinearLayout) findViewById(R.id.linearLayout);
/* Hide keyboard from this activity permanently */
InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
manager.hideSoftInputFromWindow(linearLayout.getWindowToken(),0);
或者您也可以为 XML 实现相同的功能
<EditText
android:focusable="false"
.../>
这将永久禁用该编辑框的键盘
我检查了一下,它正常工作。 InputMethodManager imm;
edittext1 = (EditText) findViewById(R.id.editText1);
imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
edittext1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
imm.hideSoftInputFromWindow(edittext1.getWindowToken(), 0);
}
});