[英]Can not open soft keyboard in EditText control
我想在以下情況下創建1個編輯文本:-用戶通常無法專注於此控件。 -當用戶單擊此控件時,將顯示軟鍵盤,並且用戶可以輸入該控件。-當用戶在此軟鍵盤上按Enter鍵或返回設備時,它處於關閉狀態,並且沒有焦點回到正常視圖。
我嘗試了下面的代碼,但不起作用:(啟動時,控制不集中:確定
單擊控件時,第一次單擊時控件是焦點,但不顯示軟鍵盤
在第二次單擊中,顯示軟鍵盤
當按下返回按鈕設備時,返回控制屏幕仍然是焦點:不好
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); }
在具有edittext的xml中,將這些值用於布局節點
android:focusable="true" android:focusableInTouchMode="true"
並且不要為您的edittext放置任何可聚焦或可聚焦的觸摸模式屬性。
然后在onKey方法中的代碼中刪除這些行。
txtSearch.setFocusable(false); txtSearch.setFocusableInTouchMode(false);
並把
txtSearch.clearFocus();
而且您應該重寫此方法
onBackPressed()
像這樣..
@Override public void onBackPressed() { txtSearch.clearFocus(); //hide the soft keyboard.. }
嘗試發表評論
hidekeyboard(v);
以及Alex Lockwood建議的更改。
在onClick()
使用它
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT);
關閉鍵盤使用
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(yourEditText.getWindowToken(), 0);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.