我在ActionBar中有一个SearchView。
在将其提交给SearchManager之前,我想验证用户输入的文本。
我的意思是,如果用户输入少于3个字符的文字,则会弹出Toast,而不是转到另一个显示搜索结果的活动。
以下是我实现SearchView的方法:
在MainActivity
:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.search, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
Log.d(TAG, "submit= "+s);
if (s.length() < 4) Toast.makeText(getApplicationContext(), "More than 3 letter pl0x", Toast.LENGTH_LONG).show();
return true;
}
@Override
public boolean onQueryTextChange(String s) {
return true;
}
};
searchView.setOnQueryTextListener(queryTextListener);
return super.onCreateOptionsMenu(menu);
}
我只想确保用户输入超过3个字符。有可能这样做吗?
答案 0 :(得分:3)
来自docs:&#34;监听器可以通过返回true来覆盖标准行为,以指示它已处理了提交请求。否则返回false以让SearchView通过启动任何关联的意图来处理提交。&#34;
if (s.length() < 4) {
Toast.makeText(getApplicationContext(), "More than 3 letter pl0x", Toast.LENGTH_LONG).show();
return true;
} else {
return false;
}
答案 1 :(得分:1)
zasadnyy有一个图书馆 点击此处https://github.com/zasadnyy/z-validations
我下载了该库并添加了“HasMinimumLength”类。这样,您可以检查文本的长度是否长于提供的最小字符长度。
请注意,您需要将strings.xml
中的字符串复制到您自己的字符串中,并且必须切换导入。意思是,在验证类而不是
import ua.org.zasadnyy.zvalidations.R
您应该使用import your.package.name.R