簡體   English   中英

無法在EditText控件中打開軟鍵盤

[英]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); } 
  1. 在具有edittext的xml中,將這些值用於布局節點

      android:focusable="true" android:focusableInTouchMode="true" 

    並且不要為您的edittext放置任何可聚焦或可聚焦的觸摸模式屬性。

  2. 然后在onKey方法中的代碼中刪除這些行。

      txtSearch.setFocusable(false); txtSearch.setFocusableInTouchMode(false); 

    並把

      txtSearch.clearFocus(); 
  3. 而且您應該重寫此方法

     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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM