Как удалить строку заголовка из Activity, расширяя ActionBarActivity или AppcompatActivity с помощью темы диалога

Мне пришлось расширить свою активность темой Theme.AppCompat.Light.Dialog из ActionBarActivity раньше, а теперь из AppcompatActivity, потому что моя базовая активность расширяет эту.

Но теперь с новой библиотекой appcompat v7 (v22) моя Activity начала показывать строку заголовка, несмотря на то, что я использую собственный стиль с элементами windowActionBar = false, android: windowNoTitle = true. Но до обновления библиотеки appcompat такой проблемы не было, строка заголовка не отображалась.

Если моя активность расширяет FragmentActivity, все в порядке, и я понимаю, что, возможно, я использую плохой шаблон, что мое диалоговое действие распространяется из AppcompatActivity, но я хотел бы знать, есть ли способ удалить строку заголовка?


person Mikhail Kharbanov    schedule 10.06.2015    source источник
comment
почему бы тебе просто не продлить активность   -  person rahulrv    schedule 10.06.2015
comment
потому что activty наследует некоторые общие вещи от activty базового класса, расширяющего AppCompatActivity. В моем приложении почти все действия расширяют эту базу.   -  person Mikhail Kharbanov    schedule 10.06.2015
comment
@MikhailKharbanov Вы нашли решение этой проблемы?   -  person f470071    schedule 25.10.2015


Ответы (9)


У меня была такая же проблема, и для ее решения мне нужно было сделать что-то вроде следующего (обратите внимание на использование «windowNoTitle» вместо «android: windowNoTitle»)

<style name="Theme.MyDialog" parent="@style/Theme.AppCompat.Light.Dialog">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>
person John O'Reilly    schedule 02.07.2015
comment
@Mikhail Это должен быть принятый ответ. Работает! :) - person PieterAelse; 18.11.2015
comment
Спасибо, ответ верный .. :) - person Jignesh Goyani; 01.02.2016
comment
я перепробовал столько нелепых вещей, прежде чем этот простой ответ сработал! - person I wrestled a bear once.; 20.06.2016
comment
Примечание (использование windowNoTitle вместо android: windowNoTitle) имеет решающее значение! - person Mr. Fish; 04.05.2018

Вы можете скрыть панель действий во время выполнения, вызвав hide(). Например:

ActionBar actionBar = getSupportActionBar();
actionBar.hide();
person saksham agarwal    schedule 10.06.2015
comment
Android Studio жаловалась, пока я не завернул actionBar.hide (); при нулевой проверке: if (actionBar! = null) {actionBar.hide ();} - person proximous; 25.09.2015

Пытаться

  getSupportActionBar().hide() 

если вы используете AppCompatActivity

А также

 getActionBar().hide() 

если ваша активность расширяет ActionBarActivity. Надеюсь, это поможет.

person Krishna    schedule 15.01.2016

В AppCompat Theme работает только одно - supportRequestWindowFeature(Window.FEATURE_NO_TITLE);

person Andoctorey    schedule 04.08.2016

Чтобы решить проблему с панелью действий для расширения класса AppCompatActivity, я начинаю с определения новой темы, расширяющей основную тему в файле style.xml:

style.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

и реализуйте тему noactionbar для действий, которые вы хотите в AndroidManifest.xml. Надеюсь на эту помощь :)

person Febriansyah    schedule 18.03.2016

Если вы используете библиотеку поддержки, используйте:

getSupportActionBar().setDisplayShowTitleEnabled(false);

Если нет, то используйте

getActionBar().setDisplayShowTitleEnabled(false);
person Obaidah    schedule 08.07.2015
comment
Ни один из методов, основанных на стилях, у меня не работал (моя Activity наследуется от AppCompatActivity); а вот этот: спасибо! - person DenisGL; 30.12.2016

Добавление android:theme="@style/AppTheme.NoActionBar" в AndroidManifest.xml помогает в моем случае.

Решение @Brexx Galangue дало мне следующую ошибку времени выполнения:

java.lang.RuntimeException: невозможно запустить действие
Причина: java.lang.IllegalStateException: вам необходимо использовать тему Theme.AppCompat (или ее потомок) с этим действием.

person Marc    schedule 03.03.2016
comment
Я тоже получаю эту ошибку, но в моем случае android:theme="@style/AppTheme.NoActionBar" неизвестен. - person CoolMind; 22.07.2016

Попробуйте добавить этот код в свой манифест, в частности, к действию, которое вы хотите удалить, Actionbar:

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

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

person Brexx Galangue    schedule 10.06.2015
comment
Спасибо за ответ, но я хочу использовать именно Theme.AppCompat.Light.Dialog. Моя деятельность должна быть похожа на диалог - person Mikhail Kharbanov; 10.06.2015
comment
Вы имеете в виду, что создаете настраиваемое диалоговое окно? - person Brexx Galangue; 10.06.2015
comment
Я создаю Activity, а не AlertDialog или DialogFragment. - person Mikhail Kharbanov; 10.06.2015
comment
попробуйте сослаться на этот вопрос: stackoverflow.com/questions/21521110 - person Brexx Galangue; 10.06.2015

person    schedule
comment
откуда R.layout.custom_title_bar? - person Slack Groverglow; 01.09.2018
comment
res / layout / custom_title_bar.xml - person pruthwiraj.kadam; 26.11.2018