如何在 android 操作栏中添加搜索和复选框图标及其功能?

How to add search and checkbox icon with their functions in android action bar?

我想在操作栏菜单中添加一个搜索视图和复选框。如果打开搜索视图,则此复选框将可见。而在相反的情况下,它将被隐藏。我该怎么做? 我在下面做一些事情。但它不能正常工作。当搜索视图关闭时,我想隐藏复选框(在我的笔记中)。 menu.xml

 <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">

        <item
            android:id="@+id/search_button"
            android:icon="@drawable/ic_icon_search"
            android:title="Arama"
            app:showAsAction="ifRoom|collapseActionView"

            app:actionViewClass="android.support.v7.widget.SearchView">

        </item>
        <item
            android:id="@+id/search_in_my_notes_checkbox"
            app:showAsAction="ifRoom"
            android:title="@string/search_in_my_notes"
            android:checkable="true"
            android:visible="false"

            />
    </menu>

HomeActivity.java

 public boolean onOptionsItemSelected(MenuItem item) {
        if(item.getItemId() == R.id.search_button){
            MenuItem searchInMyNotesCheckbox = (MenuItem)menu.findItem(R.id.search_in_my_notes_checkbox);
            searchInMyNotesCheckbox.setVisible(true);
        }


        return super.onOptionsItemSelected(item);
    }

我找到了替代解决方案。我将使用两个复选框图像,选中和未选中。我将像这样覆盖 onCreateOptionsMenu :

 @Override
public boolean onCreateOptionsMenu(final Menu menu) {
    this.menu = menu;
    getMenuInflater().inflate(R.menu.menu, menu);
    MenuItem search = (MenuItem)menu.findItem(R.id.search_button2);
    final MenuItem searchInMyNotesCheckbox = (MenuItem) menu.findItem(R.id.search_in_my_notes_checkbox);

    MenuItemCompat.setOnActionExpandListener(search,
            new MenuItemCompat.OnActionExpandListener() {
                @Override
                public boolean onMenuItemActionExpand(MenuItem menuItem) {
                    // Return true to allow the action view to expand

                    return true;
                }
                @Override
                public boolean onMenuItemActionCollapse(MenuItem menuItem) {
                    MenuItem searchInMyNotesCheckbox = (MenuItem) menu.findItem(R.id.search_in_my_notes_checkbox);
                    searchInMyNotesCheckbox.setVisible(false);
                    return true;
                }
            });

    searchInMyNotesCheckbox.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {

            if(item.getIcon() == R.drawable.checked_checkbox){
                item.setIcon(R.drawable.unchecked_checkbox);
            }
            else {
                item.setIcon(R.drawable.checked_checkbox);
            }
            return false;
        }
    });
    return super.onCreateOptionsMenu(menu);
}