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

Как мы можем скрыть строку заголовка при использовании панели действий?

Я использую ActionBarSherlock, и я пытаюсь скрыть строку заголовка своего приложения, но всякий раз, когда я это делаю, я получаю NullPointerException при обращении к ActionBar. Как удалить/скрыть строку заголовка? Обратите внимание, что я не имею в виду название панели действий. Я имею в виду строку заголовка над панелью действий. Я запускаю свое приложение на устройстве Android 2.3.

Ниже мой код: (Мой класс расширяет SherlockFragmentActivity.)

super.onCreate(savedInstanceState);
setTheme(R.style.Theme_Sherlock);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
ActionBar actionbar = getSupportActionBar();
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //I get the NullPointerException here.

//...

setContentView(R.layout.tab_navigation);
4b9b3361

Ответ 1

Нашел решение на этом. Если вы объявите свою тему на AndroidManifest.xml, строка заголовка исчезнет сама по себе. Хотя, я не понимаю, почему он работает только при объявлении на AndroidManifest.xml, а не на коде.

Причиной исключения NullPointerException является то, что ActionBar является синонимом TitleBar в более высоких версиях (ICS и новее). Используя библиотеку совместимости и ActionBarSherlock, скрытие TitleBar также означает скрытие ActionBar.

Ниже описано, как вы можете настроить приложение на использование темы Шерлока: (вы должны добавить его в тег приложения)

android:theme="@style/Theme.Sherlock"

Если вы знаете, как скрыть строку заголовка в коде, пожалуйста, не стесняйтесь модифицировать мой ответ, чтобы включить свой ответ. И если кто-нибудь может объяснить, почему он работает только с файлом манифеста, а не с кодом, если было бы хорошо.:)

Ответ 2

Скрываю строку заголовка, добавляя следующие строки кода:

getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayShowHomeEnabled(false);

надеюсь, что это поможет:)

Ответ 3

чтобы скрыть всю строку заголовка и сохранить только панель действий, используя этот код:

final ActionBar actionBar = getActionBar();
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayUseLogoEnabled(false);

это сработало для меня

Ответ 4

Я искал ответ для этого. Найдено одно решение.

actionBar = getActionBar();
actionBar.hide();

Вышеприведенный фрагмент удалит заголовок и слайдер. Надеюсь, что это поможет.

Ответ 6

Ответ Arci не совсем корректен. Если вы прочитали документацию Theming, вы можете обнаружить, что:

Темы должны быть определены в вашем манифесте для всего приложения или на основе активности. Вы также можете определить тему в коде каждого действия перед вызовом super.onCreate(Bundle). Это необходимо сделать для каждого действия, которое вы продлеваете с одного из базовых классов активности "Шерлок" и намереваетесь использовать панель действий.

Другими словами, вам будет достаточно поменять первые две строки вашего исходного кода:

setTheme(R.style.Theme_Sherlock);
super.onCreate(savedInstanceState);
...

Ответ 7

У меня была та же проблема. Ни один из этих ответов не сработал у меня, я до сих пор видел панель заголовка, показанную непосредственно перед загрузкой Actionbar.

Мне пришлось установить тему Activity в NoActionBar в манифесте:

android:theme="@style/Theme.Sherlock.NoActionBar"

И затем установите тему обратно в мою активность прямо перед setContentView():

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setTheme(R.style.Theme_Custom);
    setContentView(R.layout.activity_home);
}

Это все еще загрузило мою настраиваемую тему, и я больше не вижу проблематики панели заголовка, когда активность загружается

Ответ 8

Если вы используете Xamarin. Вы можете использовать ниже.

ActionBar.Hide();

Ответ 9

Попробуйте:

setTheme(R.style.Theme_Sherlock_NoActionBar);

Ответ 10

    <activity android:name=".xxxxxActivity"
              android:theme="@style/Theme.Sherlock.NoActionBar"/>