0

我想创建 1 个具有以下条件的编辑文本: - 用户无法正常关注此控件。- 当用户点击此控件时,会显示软键盘,用户可以输入此控件 - 当用户在此软键盘上或返回设备上按 Enter 时,它会关闭并返回正常视图,并且控件不是焦点。

我尝试了下面的代码但不起作用:(启动时,控制不是焦点:好的

单击控件时,第一次单击时,控件为焦点但不显示软键盘

在第二次点击中,显示软键盘

  • 当按下软键盘中的输入按钮时:返回屏幕控制不聚焦: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. 在具有edittext的xml中,将这些值放入布局节点

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

    并且不要在您的编辑文本的触摸模式属性中放置任何可聚焦或可聚焦的属性。

  2. 然后在 onKey 方法中的代码中删除这些行..

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

    并放

     txtSearch.clearFocus();
    
  3. 你应该重写这个方法

    onBackPressed() 
    

    像这样..

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

尝试评论

hidekeyboard(v);

以及亚历克斯洛克伍德建议的改变。

于 2012-04-18T05:03:36.460 回答
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 回答