在SearchView中验证文本输入

时间:2014-03-13 11:39:49

标签: android

我在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个字符。有可能这样做吗?

2 个答案:

答案 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