Android 无法在EditText控件中打开软键盘
我想创建一个具有以下条件的编辑文本: -正常情况下,用户无法关注此控件。 -当用户单击此控件时,将显示软键栏,用户可以输入此控件 -当用户按下此软键键盘上的enter键或返回设备时,它将关闭并返回到正常视图,控制不聚焦 我尝试了以下代码,但无效:( 启动时,控制未聚焦:确定 单击控件时,第一次单击时,控件为焦点,但不显示软键 在第二次单击中,显示软键Android 无法在EditText控件中打开软键盘,android,Android,我想创建一个具有以下条件的编辑文本: -正常情况下,用户无法关注此控件。 -当用户单击此控件时,将显示软键栏,用户可以输入此控件 -当用户按下此软键键盘上的enter键或返回设备时,它将关闭并返回到正常视图,控制不聚焦 我尝试了以下代码,但无效:( 启动时,控制未聚焦:确定 单击控件时,第一次单击时,控件为焦点,但不显示软键 在第二次单击中,显示软键 当按下软键B中的“回车”按钮时:返回屏幕,控制未聚焦:确定 当按下设备上的“后退”按钮时,返回到带有控制的屏幕仍为焦点:不正常 public v
- 当按下软键B中的“回车”按钮时:返回屏幕,控制未聚焦:确定
- 当按下设备上的“后退”按钮时,返回到带有控制的屏幕仍为焦点:不正常
public void onCreate(Bundle savedInstanceState) { final EditText txtSearch = (EditText)this.findViewById(R.id.p60004_txt_search_str); txtSearch.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub txtSearch.setFocusable(true);//(false); txtSearch.setFocusableInTouchMode(true); txtSearch.requestFocus(); } }); txtSearch.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) { String strSearch = txtSearch.getText().toString(); if (strSearch != null && strSearch != ""){ searchFriend(UserAPIConstants.FRIEND_SEARCH_TYPE_SC, strSearch); } hideSoftKeyboard(v); txtSearch.setFocusable(false); txtSearch.setFocusableInTouchMode(false); } return false; } }); public void hideSoftKeyboard (View view) { InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); }
hidekeyboard(v);
以及Alex Lockwood建议的更改。在onClick()中使用此选项。
要关闭键盘,请使用
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(yourEditText.getWindowToken(), 0);
android:focusable="true"
android:focusableInTouchMode="true"
并且不要为edittext设置任何可聚焦或可聚焦触摸模式属性 txtSearch.setFocusable(false);
txtSearch.setFocusableInTouchMode(false);
放
txtSearch.clearFocus();
onBackPressed()
像这样
@Override
public void onBackPressed() {
txtSearch.clearFocus();
//hide the soft keyboard..
}
我不太明白你的意思。如果用户不能专注于
txtSearch
(条件1),那么用户如何单击txtSearch
输入文本(条件2)?“在代码下但不起作用”…哪个部分不起作用?或者整个代码?我尝试了clearFocus,但它不起作用。此外,onBackPressed也不起作用。您使用的是哪种api?我刚才也做了同样的。它对我来说很好:|@Override public void onBackPressed(){EditText a=((EditText)this.findViewById(R.id.p60004_txt_search_str));a.clearFocus();//隐藏软键盘..隐藏软键盘(a);}你是什么意思?我只是使用安卓2.2并调用txtSearch.clearFocuslet
@Override
public void onBackPressed() {
txtSearch.clearFocus();
//hide the soft keyboard..
}