EditText 设置 imeOptions 无效问题

有时候我们需要在EditText  输出完之后 需要在键盘出现 右下角变成“GO”或“前往 搜索时;通常我们需要设置Android:imeOptions属性。android:imeOptions的值有actionGo、 actionSend 、actionSearch、actionDone等 

但是今天我发现设置了无效  那是因为我设置了 android:maxLines="1" 

解决方法 就是去掉 android:maxLines="1"  设置 android:singleLine="true" 有必要还需要 inputType设置为text 


网上有一种监听点击回车 搜索的写法 这种写法 会执行两次  解决方法是

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 

public boolean onEditorAction(TextView v, int actionId,                   KeyEvent event)  {                          

if (actionId==EditorInfo.IME_ACTION_SEND ||(event!=null&&event.getKeyCode()== KeyEvent.KEYCODE_ENTER)) 

{                

//do something;              

return true;             

}               

return false;           

}       

});


解决方法是 1  (ps 这种方法我感觉写法有点多余) 

  1. public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {  
  2.         //以下方法防止两次发送请求 再判断动作 
  3.         if (actionId == EditorInfo.IME_ACTION_SEND ||  
  4.                 (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {  
  5.             switch (event.getAction()) {  
  6.                 case KeyEvent.ACTION_UP:  
  7.                     //发送请求  
  8.                     String keyWord = et_search.getText().toString().trim();  
  9.                     if (null == keyWord)  
  10.                         keyWord = "";  
  11.                     dismisspopup();  
  12.                     LogUtils.d("向服务器发送搜索请求:" + keyWord);  
  13.                     //发起查询  
  14.                     searchByKeyWord(keyWord);  
  15.                     hideSoftInput();  
  16.                     return true;  
  17.                 default:  
  18.                     return true;  
  19.             }  
  20.         }  
  21.         return false;  
  22.     }  
还有一种写法   直接监听actionId等于搜需要的时间即可

  1. EditText editText = (EditText) contentView.findViewById(R.id.editText);  
  2.         editText.setOnEditorActionListener(new OnEditorActionListener() {  
  3.             @Override  
  4.             public boolean onEditorAction(TextView v, int actionId,  
  5.                     KeyEvent event) {  
  6.                 if (actionId == EditorInfo.IME_ACTION_SEARCH) {  
  7.                     Toast.makeText(getActivity(), "1111111",Toast.LENGTH_SHORT).show();  
  8.                 }  
  9.   
  10.                 return false;  
  11.             }  
  12.         });  



猜你喜欢

转载自blog.csdn.net/w6718189/article/details/53579830