我的 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 个。问题是,
- 我要输入 5 个字符。
- 然后我再输入一个字符。
- 我再次点击同一个字符,在第二次点击时它没有触发监听器,它在
SearchView
中显示第 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)});
我没有获取 EditText
的 id
,而是传递了它的实际 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/