2015-06-10 1 views
22

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

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

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

+0

почему не просто расширить деятельность – 3xplore

+0

, потому что activty наследует некоторые общие вещи из активностью базового класса, которая расширяет AppCompatActivity. В моем приложении почти все действия расширяют эту базу. –

+0

@MikhailKharbanov Вы нашли решение этой проблемы? – f470071

ответ

-1

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

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

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

+0

Спасибо за ответ, но я хочу использовать именно Theme.AppCompat.Light.Dialog. Моя активность должна быть как диалог –

+0

Вы имеете в виду, что вы создаете пользовательское диалоговое окно? –

+0

Я создаю Activity, а не AlertDialog или DialogFragment. –

13

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

ActionBar actionBar = getSupportActionBar(); 
actionBar.hide(); 
+0

Я пробовал, но getSupportActionBar возвращает null –

+0

Android Studio жаловалась, пока я не завернул actionBar.hide(); в нулевой проверке: if (actionBar! = null) {actionBar.hide();} – proximous

+1

попробуйте getSupportActionBar(). hide() ... Будет работать .. –

50

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

<style name="Theme.MyDialog" parent="@style/Theme.AppCompat.Light.Dialog"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 
+1

@Mikhail Это должен быть принятый ответ. Работает! :) – PieterAelse

+1

Да, это решает проблему! Спасибо :) –

+1

работает. Хороший ответ! –

7

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

getSupportActionBar().setDisplayShowTitleEnabled(false); 

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

getActionBar().setDisplayShowTitleEnabled(false); 
+0

Ни один из методов, основанных на стиле, не работал для меня (моя активность наследуется от AppCompatActivity); но это сделало: спасибо! – DenisGL

8

Попробуйте

getSupportActionBar().hide() 

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

И

getActionBar().hide() 

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

+0

Спасибо, это работает! – CoolMind

1

Добавление android:theme="@style/AppTheme.NoActionBar" в AndroidManifest.xlm делает трюк в моем случае. решения @Brexx Galangue дало мне следующую ошибку во время выполнения:

java.lang.RuntimeException: Unable to start activity  
Caused by: java.lang.IllegalStateException: You need to use 
a Theme.AppCompat theme (or descendant) with this activity. 
+0

Я также получаю эту ошибку, но «андроид: theme =« @ style/AppTheme.NoActionBar »' не показан в моем случае. – CoolMind

5

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

стиля. 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 тему к деятельности, которую вы хотите в AndroidManif est.xml.Надеюсь, что это поможет :)

3

только одна вещь, работа в AppCompat Тема - supportRequestWindowFeature(Window.FEATURE_NO_TITLE);

0

общественный класс MainActivity простирается AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
      getSupportActionBar().setCustomView(R.layout.custom_title_bar); 

     } }