2015-10-28 43 views
0

如何在SearchView上监听输入法操作?由于它不是EditText的子类。SearchView监听输入法操作

我想要做的是处理当用户按下键盘上的“输入”键并且没有输入文本。

没有文字的问题是OnQueryTextListener.onQueryTextSubmit()只有在用户输入文字时才会触发。

回答

1

如何获取searchview的EditText并使用OnEditorAction?

final SearchView searchView = (SearchView) findViewById(R.id.searchView); 
int searchViewPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); 
EditText searchPlateEditText = (EditText) searchView.findViewById(searchViewPlateId); 
searchPlateEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 

     if (actionId == EditorInfo.IME_ACTION_SEARCH) { 
      if(!TextUtils.isEmpty(v.getText().toString())){ 
       //Text entered 
      } 
      else { 
       //no string 
      } 
     } 
     return true; 
    } 

}); 
+1

完美地工作。我建议在'searchPlateEditText'周围加一个'null'检查,以防止未来的内部设计更改,因为我们使用的是未公开的代码。由于他们不暴露他们的EditText,他们可能会在任何时候改变它的标识符。 –