Как показать и скрыть ActionBar с помощью AppCompat v.7

У меня есть простое приложение, которое отображает текст.

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

В настоящее время у меня есть ActionBar. My MainActivity.Java расширяет AppCompatActivity. Все в приложении находится в этом упражнении.

Теперь я хочу сделать так, чтобы ActionBar появился только в режиме «Просмотр», а не на экране запуска или «info» / «browse».

Возможно ли иметь ActionBar в одной части приложения и нет ActionBar в другой части приложения? (И держать все в одной деятельности?)

Я пытался сделать это безрезультатно. Если это возможно, что мне делать дальше?

До сих пор я пытался сделать следующее:

1) Создайте эту тему

<style name="Theme.AppCompat.NoActionBar" parent="Theme.AppCompat.Light"> <item name="android:windowActionBar">false</item> <item name="android:windowNoTitle">true</item> </style> 

И примените его к MainActivity …

 <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/Theme.AppCompat.NoActionBar" > 

…. После этого ActionBar все еще был там. (Это происходит из этого сообщения SO ( android: windowNoTitle не будет скрывать панель действий с помощью appcompat-v7 21.0.0 )

2) Еще одна попытка состояла в том, чтобы добавить это в onCreate.

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_ACTION_BAR); getActionBar().hide(); setContentView(R.layout.activity_main); 

Это произошло после изучения этой SO-почты: ( Как скрыть панель действий до создания активности, а затем снова показать ее? )

Какие-либо предложения?

Solutions Collecting From Web of "Как показать и скрыть ActionBar с помощью AppCompat v.7"

В действиях, в которых вы не хотите иметь панель действий, используйте тему, полученную из Theme.AppCompat.NoActionBar или Theme.AppCompat.Light.NoActionBar . Эта активность никогда не сможет отобразить панель действий, если вы не предоставите свой собственный через setSupportActionBar(Toolbar) .

В действиях, в которых вы хотите, чтобы панель действий использовала тему, полученную из Theme.AppCompat , Theme.AppCompat.Light или Theme.AppCompat.Light.DarkActionBar . Это позволит вам динамически скрывать или показывать панель действий в такой деятельности. Используя эти темы, вы не сможете предоставить свою собственную панель действий.

При работе с панелью действий appcompat-v7 вам нужно получить ее, вызвав getSupportActionBar() вместо getActionBar() .

Вы можете скрыть и показать ActionBar программно.

Прятаться

 getSupportActionBar().hide(); 

Показывать

 getSupportActionBar().show(); 

Это также можно сделать из фрагментов

Прятаться

 getActivity().getSupportActionBar().hide(); 

Показывать

 getActivity().getSupportActionBar().show(); 

Редактировать:

Как отметил @RenniePet ,

Вы должны вызвать ((AppCompatActivity)getActivity()).getSupportActionBar() , если вы используете Toolbar в качестве ActionBar .

Расширьте свою активность как AppCompatActivity а затем используйте панель действий как: –

 getSupportActionBar().hide(); // for hiding getSupportActionBar().show(); // for showing 
 <style name="Theme.AppCompat.NoActionBar" parent="Theme.AppCompat.Light"> <item name="android:windowActionBar">false</item> <item name="android:windowNoTitle">true</item> </style> 

Удалите андроид в окне itemActionbar.just, как показано ниже:

 <style name="Theme.AppCompat.NoActionBar" parent="Theme.AppCompat.Light"> <item name="windowActionBar">false</item> <item name="android:windowNoTitle">true</item> </style> 

Надеюсь, это может вам помочь.

AppCompatActivity имеет собственную встроенную панель инструментов. Вам не нужно использовать дополнительное определение панели инструментов в главном xml.

Просто позвоните getSupportActionBar (). Show ()

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().show(); } public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { TextView text1=(TextView)findViewById(R.id.textView); text1.setText("I changed the text!"); } return super.onOptionsItemSelected(item); } 

Надеюсь, это может быть решением. Он работал над моей системой:

 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 

Dismiss ToolBar для всех действий с AppTheme :
Styles.xml :

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><!-- .NoActionBar -->