2015-03-27 4 views
0

Кто-нибудь знает, как скрыть кнопку «Назад» в AppCompat v21 searchview? (Обведенный зеленой линией)Как скрыть кнопку «Назад» в Searchview

searchview back button

Я искал много, но не мог найти что-нибудь полезное.

menu_main.xml:

<item android:id="@+id/search" 
     android:title="@string/search_title" 
     app:showAsAction="always|collapseActionView" 
     android:icon="@drawable/abc_ic_search_api_mtrl_alpha" 
     android:orderInCategory="300" 
     app:actionViewClass="android.support.v7.widget.SearchView" /> 

<item android:id="@+id/action_home" 
    android:title="Home" 
    android:icon="@drawable/v_home" 
    app:showAsAction="always" 
    android:orderInCategory="180"/> 

<item android:id="@+id/action_favorites" 
    android:title="Favorites" 
    android:icon="@drawable/v_favorites" 
    app:showAsAction="always" /> 

MainActivity:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu_main, menu); 

     firstMenu = menu; 


     searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 

     MenuItem searchItem = menu.findItem(R.id.search); 
     SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); 
     searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
     searchView.setSubmitButtonEnabled(true); 
     searchView.setActivated(true); 


     searchView.setOnSearchClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       menuItemsVisibility(false); 
      } 
     }); 
     searchView.setOnCloseListener(new SearchView.OnCloseListener() { 
      @Override 
      public boolean onClose() { 
       menuItemsVisibility(true); 
       return false; 
      } 
     }); 

     return true; 
    } 

    @Override 
    public void onBackPressed() { 
     menuItemsVisibility(true); 
     super.onBackPressed(); 
    } 

// setting visibility of menu items on search 
private void menuItemsVisibility(boolean visibility) { 

    MenuItem homeItem = firstMenu.findItem(R.id.action_home); 
    MenuItem favoriteItem = firstMenu.findItem(R.id.action_favorites); 
    MenuItem otItem = firstMenu.findItem(R.id.action_ot); 
    MenuItem ntItem = firstMenu.findItem(R.id.action_nt); 
    homeItem.setVisible(visibility); 
    favoriteItem.setVisible(visibility); 
    otItem.setVisible(visibility); 
    ntItem.setVisible(visibility); 
} 

Примечание: поведение showAsAction: Всегда и используя методы menuItemsVisibility(), чтобы настроить видимость элементов панели инструментов является намеренным.

Другое примечание: MainActivity расширяет ActionBarActivity, а также реализует инструменты ObservableScrollViewCallbacks из библиотеки ObservableScrollView.

+2

набор 'getSupportActionBar() setDisplayHomeAsUpEnabled (ложь),' в вашей деятельности.. @James – Pooja

+0

Я уже добавил getSupportActionBar(). SetDisplayHomeAsUpEnabled (false); для моей активности, но кнопка «Назад» все еще отображается – James

+0

вы можете разместить свой код здесь. Я мог бы понять. @James – Pooja

ответ

2

Используйте метод:

getSupportActionBar().setDisplayHomeAsUpEnabled(false); 

, чтобы удалить кнопку домой из панели действий.

+0

'getActionBar()' не будет работать в Appcompat v7. @Hanish – Pooja

+0

Я использую AppCompat, поэтому getActionBar() выдает ошибку. он должен быть getSupportActionBar(), который не работает вообще. – James

+0

Вы правы, на самом деле я случайно вставил это вместо getSupport @Pooja –

1

Это не совсем безопасный метод, потому что кнопка возврата (навигация вверх) не имеет идентификатора. Но если вы используете AppCompat с панелью инструментов, вы можете использовать этот код, чтобы найти его. Он должен быть первым в макете.

int count = this.getToolbar().getChildCount(); 

    for(int i = 0; i < count; ++i) { 
     View v = this.getToolbar().getChildAt(i); 
     if(v instanceof ImageButton) { 
      return (ImageButton)v; 
     } 
    } 

Назовите этот метод внутри onPrepareOptionsMenu, если вы хотите изменить его с помощью этой кнопки.

4

измененное приложение: showAsAction = "всегда | collapseActionView" в приложение: showAsAction = "всегда"

Смежные вопросы