美文网首页
菜单文件和SearchView

菜单文件和SearchView

作者: 遇见_未见 | 来源:发表于2016-10-25 10:15 被阅读72次

    invalidateOptionsMenu();使原填充的菜单项无效,当用户再次访问菜单时,再次调用onCreateOptionsMenu(Menu menu)。如果我们要每次访问都重新对菜单进行处理,使用onPrepareOptionsMenu()来替代onCreateOptionsMenu()

    菜单文件和SearchView:搜索框 的使用
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.actions,menu);
        SearchView searchView = (SearchView) menu.findItem(R.id.app_bar_search).getActionView();
        searchView.setOnQueryTextListener(new QueryTextListener());
        return true;
    }
    
    public class QueryTextListener  implements SearchView.OnQueryTextListener{
        @Override
        public boolean onQueryTextSubmit(String query) {
            Toast.makeText(ActionBarUseageActivity.this, "Searching for: " + query + "...", Toast.LENGTH_SHORT).show();
            return true;
        }
        @Override
        public boolean onQueryTextChange(String newText) {
            newText = newText.isEmpty() ? "" : "Query so far: " + newText;
            tvSearchPre.setText(newText);
            return true;
        }
    }
    
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:app="http://schemas.android.com/apk/res-auto">
        <item
            android:id="@+id/app_bar_search"
            app:actionViewClass="android.support.v7.widget.SearchView"
            android:icon="@drawable/ic_search_black_24dp"
            android:title="Search"
            app:showAsAction="ifRoom"/>
        <item
            android:id="@+id/app_bar_edit"
            android:icon="@android:drawable/ic_menu_edit"
            android:title="Edit"
            app:showAsAction="always"/>
        <item
            android:id="@+id/app_bar_sort"
            android:icon="@android:drawable/ic_menu_sort_by_size"
            android:title="Sort"
            app:showAsAction="ifRoom">
            <menu>
                <item
                    android:id="@+id/action_sort_size"
                    android:icon="@android:drawable/ic_menu_sort_by_size"
                    android:title="By Size"/>
                <item
                    android:id="@+id/action_sort_alpha"
                    android:icon="@android:drawable/ic_menu_sort_alphabetically"
                    android:title="Alphabetically"/>
            </menu>
        </item>
    </menu>
    
    另外的用法
    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        //将搜索框加入ActionBar
        MenuItem item = menu.add("Search");
        //设置SearchView的图标
        item.setIcon(android.R.drawable.ic_menu_search);
        //设置ActionItem的显示方式
        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM|MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
        //使用自定义的SearchView以便更好的控制
        mSearchView = new MySearchView(getActivity());
        //设置文本改变的监听器
        mSearchView.setOnQueryTextListener(this);
        //设置可删除文本的监听器
        mSearchView.setOnCloseListener(this);
        //设置图标是否显示在文本的旁边,还是作为背景
        mSearchView.setIconifiedByDefault(true);
        //将SearchView作为ActionItem的选项
        item.setActionView(mSearchView);
    }
    

    相关文章

      网友评论

          本文标题:菜单文件和SearchView

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