【问题标题】:SearchView listen for IME actionsSearchView 侦听 IME 操作
【发布时间】:2015-10-28 06:37:53
【问题描述】:

如何在SearchView 上侦听 IME 操作?因为它不是EditText 的子类。

我要做的是当用户按下键盘上的“enter”键没有输入任何文字时进行处理。

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

【问题讨论】:

    标签: android searchview


    【解决方案1】:

    使用androidx.appcompat.widget.SearchView,您可以使用:

    setOnQueryTextListener(object : SearchView.OnQueryTextListener {
        override fun onQueryTextSubmit(query: String): Boolean {
             return true
        }
    
        override fun onQueryTextChange(newText: String): Boolean {
             return true
        }
    })
    

    【讨论】:

      【解决方案2】:

      获取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;
          }
      
      });
      

      【讨论】:

      • 完美运行。我建议在searchPlateEditText 周围放置一个null 检查,以防止未来的内部设计更改,因为我们使用的是未记录的代码。由于他们不公开他们的EditText,因此他们可能随时更改其标识符。
      • 也适用于我,但仅在使用 android.widget.SearchView 时,不适用于 androidx.appcompat.widget.SearchView
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      • 2021-03-14
      • 1970-01-01
      相关资源
      最近更新 更多