美文网首页
在Toolbar中添加一个SearchView

在Toolbar中添加一个SearchView

作者: Richile | 来源:发表于2019-04-24 22:45 被阅读0次
    1. 新建一个菜单(在res目录下新建menu目录)
      menu_search.xml:
    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item
            android:id="@+id/app_bar_search"
            android:icon="@drawable/ic_search_black_24dp"
            android:title="Search"
            app:actionViewClass="android.widget.SearchView"
            app:showAsAction="ifRoom"/>
    
    </menu>
    

    这个item不用手写,可以直接在design界面拖入
    其中showAsAction有以下值:
    1、always:使菜单项一直显示在ToolBar上。
    2、ifRoom:如果有足够的空间,这个值会使菜单项显示在ToolBar上。
    3、never:使菜单项永远都不出现在ToolBar上,在…的子项中显示。
    4、withText:使菜单项和它的图标,菜单文本一起显示。
    actionViewClass="android.widget.SearchView"表示点击后显示一个SearchView

    1. 在Activity.onCreateOptionsMenu()中加载这个菜单
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // 获取一个带有search的menu
            getMenuInflater().inflate(R.menu.menu_search, menu);
            // 设置SearchView
            MenuItem menuItem = menu.findItem(R.id.app_bar_search);
            if (menuItem != null) {
                // 获取到SearchView(必须在xml item中设置app:actionViewClass="android.widget.SearchView")
                SearchView searchView = (SearchView) menuItem.getActionView();
                searchView.setQueryHint("热门新闻");
                // 在右侧添加提交按钮
                searchView.setSubmitButtonEnabled(true);
                // 根据源码获取子View的id,然后获取子View来设置其属性
                int src_text_id = searchView.getContext().getResources().getIdentifier(
                        "android:id/search_src_text", null, null);
                TextView textView = searchView.findViewById(src_text_id);
                textView.setTextColor(Color.BLUE);
                int layout_id = searchView.getContext().getResources().getIdentifier(
                        "android:id/search_plate", null, null);
                View view = searchView.findViewById(layout_id);
                view.setBackgroundColor(Color.WHITE);
            }
            return true;
        }
    
    1. 这时还是不会显示,需要在Activity.onCreate()中添加Toolbar
    setSupportActionBar(mToolbar);
    

    相关文章

      网友评论

          本文标题:在Toolbar中添加一个SearchView

          本文链接:https://www.haomeiwen.com/subject/pofogqtx.html