您当前的位置: 首页 >  ar

Kevin-Dev

暂无认证

  • 0浏览

    0关注

    544博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Android -- UI开发】SearchView 的基本使用

Kevin-Dev 发布时间:2017-06-14 15:30:39 ,浏览量:0

一、简介

SearchView 是和 Toolbar 联动,通过 menu 进行设置的搜索的控件(不知道我这么概括你能不能懂)。会在 Toolbar 的右侧出现一个搜索的按钮(系统自带的,也可以进行替换)。当你点击搜索按钮的时候,会出现相应的编辑框进行搜索。当你点击叉号的时候,本次搜索取消,还原成搜索按钮。

二、属性
  • 输入类型 android:inputType

  • 最大宽度 android:maxWidth

  • 搜索图标是否显示在搜索框内 mSearchView.setIconifiedByDefault(true);

  • 设置搜索框展开时是否显示提交按钮,可不显示 mSearchView.setSubmitButtonEnabled(true);

  • 让键盘的回车键设置成搜索 mSearchView.setImeOptions(EditorInfo.IME_ACTION_SEARCH);

  • 搜索框是否展开,false表示展开 mSearchView.setIconified(false);

  • 获取焦点 mSearchView.setFocusable(true); mSearchView.requestFocusFromTouch();

  • 设置提示词 mSearchView.setQueryHint(“请输入关键字”);

  • 设置输入框文字颜色 EditText editText = (EditText) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); editText.setHintTextColor(ContextCompat.getColor(this, R.color.white)); editText.setTextColor(ContextCompat.getColor(this, R.color.white));

三、代码实践

在这里插入图片描述

1. 在 res 文件夹下新建 menu 文件夹,然后在 menu 文件夹下新建 menu_search.xml 文件。




    

    

2. 重写 Activity 的 onCreateOptionsMenu(Menu menu) 方法:

	@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        //引用menu文件
        getMenuInflater().inflate(R.menu.menu_search, menu);

        //找到SearchView并配置相关参数
        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchView mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);

        //搜索图标是否显示在搜索框内
        mSearchView.setIconifiedByDefault(true);
        //设置搜索框展开时是否显示提交按钮,可不显示
        mSearchView.setSubmitButtonEnabled(true);
        //让键盘的回车键设置成搜索
        mSearchView.setImeOptions(EditorInfo.IME_ACTION_SEARCH);
        //搜索框是否展开,false表示展开
        mSearchView.setIconified(false);
        //获取焦点
        mSearchView.setFocusable(true);
        mSearchView.requestFocusFromTouch();
        //设置提示词
        mSearchView.setQueryHint("请输入关键字");
        //设置输入框文字颜色
        EditText editText = (EditText) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
        editText.setHintTextColor(ContextCompat.getColor(this, R.color.white));
        editText.setTextColor(ContextCompat.getColor(this, R.color.white));

3. 设置监听 主要是 setOnQueryTextListener,包含搜索和内容发生改变两个事件。 其他还有 setOnCloseListener 关闭的监听,setOnSearchClickListener 点击搜索按钮的监听, setOnSuggestionListener 提示内容被选中的监听

        // 设置搜索文本监听
        mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            // 当点击搜索按钮时触发该方法
            @Override
            public boolean onQueryTextSubmit(String query) {
                Snackbar.make(mConstraintLayout, "搜索内容===" + query, Snackbar.LENGTH_SHORT).show();

                //伪搜索
                mSearchResult.setVisibility(View.VISIBLE);

                //清除焦点,收软键盘
                //mSearchView.clearFocus();

                return false;
            }

            // 当搜索内容改变时触发该方法
            @Override
            public boolean onQueryTextChange(String newText) {
                //do something
                //当没有输入任何内容的时候清除结果,看实际需求
                if (TextUtils.isEmpty(newText)) mSearchResult.setVisibility(View.INVISIBLE);
                return false;
            }
        });

关注
打赏
1658837700
查看更多评论
立即登录/注册

微信扫码登录

0.0374s