Подтвердить что ты не робот

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

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

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

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

Теперь я хочу сделать так, чтобы ActionBar отображался только в режиме "Display", а не на экране запуска или "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 все еще был там. (Это происходит из этого сообщения S.O. (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);

Это было связано с изучением этого S.O. post: (Как скрыть панель действий до создания активности, а затем снова показать ее?)

Любые предложения?

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Чтобы скрыть

getSupportActionBar().hide();

Показать

getSupportActionBar().show();

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

Чтобы скрыть

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

Показать

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

Edit:

Как отмечено @RenniePet,

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

Ответ 3

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

getSupportActionBar().hide();  // for hiding
getSupportActionBar().show();  // for showing

Ответ 4

<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>

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

Ответ 5

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

Ответ 6

В методе onCreate после setContentView используйте это просто, чтобы показать или скрыть для каждого класса.

getSupportActionBar().hide();
getSupportActionBar().show();

Если вы хотите установить заголовок,

getSupportActionBar().setTitle("This is ToolBar");

Ответ 7

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

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

Ответ 8

Отклонить ToolBar для всех действий с помощью AppTheme:
styles.xml

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