android - 为什么双击不触发 onQueryTextChange?

标签 android android-ui searchview

我的 SearchView 上有 onQueryTextChange 监听器。

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String searchString) {
            return true;
        }

        @Override
        public boolean onQueryTextChange(String s) {
            if (s.length() > 5) {
                searchView.setQuery(s.substring(0, 5), false);
            }
            return false;
        }
    });

我的目标是将字符数限制为 5 个。问题是,

  1. 我要输入 5 个字符。
  2. 然后我再输入一个字符。
  3. 我再次点击同一个字符,在第二次点击时它没有触发监听器,它在 SearchView
  4. 中显示第 6 个字符

感谢帮助

最佳答案

我没有限制监听器,而是解决了在 SearchView 中获取 EditText 的问题。

我正在使用此方法获取 EditText 但它返回 null,

searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
EditText etSearchView = (EditText) searchView.findViewById(id);
etSearchView.setFilters(new InputFilter[] {new InputFilter.LengthFilter(5)});

我没有获取 EditTextid,而是传递了它的实际 id,它起作用了,

searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
EditText etSearchView = (EditText) searchView.findViewById(R.id.search_src_txt);
etSearchView.setFilters(new InputFilter[] {new InputFilter.LengthFilter(5)});

关于android - 为什么双击不触发 onQueryTextChange?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21637767/

相关文章:

android - 根据 Material 设计指南实现 SearchView

android - 在 Android 上播放 RTP/TCP/AVP 视频流

android - 如何在 Android 中执行某些动画时播放声音

Android TextView 样式

android - 如何以编程方式更改 ToggleButton 状态?

java - Android setSubmitButtonEnabled 不起作用

android - 使用支持库 v21 设置 SearchView 小部件的样式

java - 如何在 Kotlin 中声明原始类型?

java - Android ImageButton 交换资源离开 'residue'

android - TextSwitcher NullPointer 错误