如何限制SearchView输入文本长度?MenuItem设置maxLength无效
如何限制SearchView的输入文本长度
当然可以限制SearchView的输入长度啦!不过你直接在MenuItem标签里添加android:maxLength="10"确实不会生效——因为这个属性是针对EditText这类输入控件的,而SearchView是一个复合控件,MenuItem的属性没法直接传递到它内部的输入框上。
要解决这个问题,你需要获取到SearchView内部的EditText控件,然后给它设置输入长度过滤器,具体步骤如下:
- 在
onCreateOptionsMenu方法中找到对应的SearchView实例 - 定位到SearchView内部的EditText子控件
- 给EditText设置
InputFilter.LengthFilter来限制最大输入长度
以下是完整的代码示例:
@Override public boolean onCreateOptionsMenu(Menu menu) { // 加载你的菜单布局 getMenuInflater().inflate(R.menu.your_menu_file, menu); // 获取搜索菜单项 MenuItem searchItem = menu.findItem(R.id.app_bar_search); SearchView searchView = (SearchView) searchItem.getActionView(); // 找到SearchView内部的EditText(注意根据你用的库选择对应的ID) // 如果你用的是Android Support库,用android.support.v7.appcompat.R.id.search_src_text // 如果你用的是AndroidX,用androidx.appcompat.R.id.search_src_text EditText searchEditText = searchView.findViewById(androidx.appcompat.R.id.search_src_text); // 设置最大输入长度为10 searchEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)}); return true; }
另外提醒一下:如果你的项目已经迁移到AndroidX,一定要注意EditText的ID路径,不然会出现找不到控件的情况。这种方式直接作用到实际接收输入的EditText上,就能完美实现输入长度限制啦!
内容的提问来源于stack exchange,提问作者Ask Too Much
相关产品推荐
相关产品推荐

