0

以下の条件で1つの編集テキストを作成したい:-ユーザーは通常、このコントロールに集中できません。-ユーザーがこのコントロールをクリックすると、ソフトキーボードが表示され、ユーザーはこのコントロールに入力できます-ユーザーがこのソフトキーボードでEnterキーを押すか、デバイスに戻ると、閉じて、コントロールがフォーカスされていない通常のビューに戻ります。

以下のコードを試しましたが、機能しません:(起動時にコントロールがフォーカスされていません:ok

コントロールをクリックすると、最初のクリックでコントロールはフォーカスされますが、ソフトキーボードは表示されません

2回目のクリックで、ソフトキーボードを表示します

  • ソフトキーボードのEnterボタンを押したとき:コントロールがフォーカスされていない画面に戻る:OK
  • 戻るボタンデバイスを押しても、コントロール付きの画面に戻るにはまだフォーカスがあります:OKではありません

    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);
    }
    
4

3 に答える 3

1
  1. In your xml which has edittext put these values for the layout node

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

    and dont put any focusable or focusable in touch mode attributes for your edittext..

  2. Then in your code in onKey method remove thse lines..

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

    and put

     txtSearch.clearFocus();
    
  3. And You should override this method

    onBackPressed() 
    

    like this..

     @Override
      public void onBackPressed() {
     txtSearch.clearFocus();
     //hide the soft keyboard..
    
      }
    
于 2012-04-18T05:25:54.593 に答える
0

これを使用します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);
于 2012-04-18T05:24:25.383 に答える
0

コメントしてみる

hidekeyboard(v);

そしてAlex Lockwoodが提案した変更。

于 2012-04-18T05:03:36.460 に答える