2016-04-29 1 views
1

Я хочу добавить searchview и установить флажок в меню панели действий. И этот флажок будет виден, если searchview будет открыт. И в противном случае он будет скрыт. Как я могу это сделать? Я делаю что-то внизу. Но он работает неправильно. Я хочу скрыть флажок (в моих заметках), когда searchview закрыт. menu.xmlКак добавить значок поиска и флажок со своими функциями в панели действий Android?

<?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); 
    } 

enter image description here

ответ

0

я нашел альтернативное решение. Я использую два флажка с отмеченными и непроверенными. И я переопределю 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); 
}