2014-10-30 6 views
2

Я обновил Androïd SDK вчера, поэтому я изменил targetSdkVersion на 21. Так как я сделал это обновление, я не могу скрыть «ActionBar» (что не реально) на деятельность.Скрыть «ActionBar» по API 21

В моем приложении есть только одно действие, которое я хочу отобразить без заголовка и без панели действий.

Все мероприятия использовали эту тему:

<style name="AppBaseTheme" parent="Theme.AppCompat.NoActionBar"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowFullscreen">true</item> 
</style> 

и я попробовал это в соответствующей деятельности:

@Override 
protected void onCreate(final Bundle savedInstanceState) { 
    this.supportRequestWindowFeature(Window.FEATURE_NO_TITLE); 
} 

, но он не работает. Я также попытался: getSupportActionBar().hide() но getSupportActionBar() возвращает null

Есть ли у вас какие-либо идеи?

ответ

7

Использовать getActionBar().hide() вот так.

public class MyActivity extends ActionBarActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity); 

     this.getActionBar().hide(); 
    } 
} 
+2

getActionBar() также возвращает нуль, так эта строка делает сбой приложения. – Maxime

+0

используйте его в методе onCreate. –

+0

Хорошо! Я сделал это в методе onCreate, но до super.onCreate ... Я переместил инструкцию после super.onCreate(), и она работает. Спасибо – Maxime

1

Вышеуказанный раствор с getActionbar().hide() не работает для меня, поэтому я решил использовать следующее:

Просто создайте новую тему, которая является продолжением текущей темы и удалить панель из него

public class YourActivity extends ActionBarActivity 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setTheme(R.style.YourTheme_NoTitleBar); 
     setContentView(R.layout.activity_your); 

     //... 
    } 
} 

Пример возможного определения тематического

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="YourTheme" parent="YourTheme.Base"/> 

    <style name="YourTheme.Base" parent="Theme.AppCompat"> 
     <item name="colorPrimary">YOURCOLOR1</item> 
     <item name="colorPrimaryDark">YOURCOLOR2</item> 

     <!-- to show toolbar, be careful if windowNoTitle is set to true it will show the toolbar--> 
     <item name="android:windowNoTitle">true</item> 
     <item name="windowActionBar">true</item> 

     <item name="android:windowBackground">@color/YOURCOLOR3</item> 
    </style> 

    <style name="YourTheme.NoTitleBar" parent="YourTheme"> 
     <item name="android:windowNoTitle">true</item> 
     <item name="windowActionBar">false</item> 
    </style> 

</resources> 

Обратите внимание на .NoTitleBar Это может быть что угодно, но я взял это, чтобы сделать его логичным, просто убедитесь, что оба значения правильно установлены. если для параметра windowActionBar установлено значение false, но android:windowNoTitle по-прежнему является ложным, то оно все равно покажет панель инструментов!

Официальные документы http://android-developers.blogspot.be/2014/10/appcompat-v21-material-design-for-pre.html

3

У меня есть приложение с активностью без панели действий, применяя этот стиль:

<style name="AppBaseThemeNoActionBar" parent="@style/Theme.AppCompat.Light"> 
    <item name="android:windowNoTitle">true</item> 
</style> 

После включения проекта по API 21, он не работал больше, так что я был изменить стиль к:

<style name="AppBaseThemeNoActionBar" parent="@style/Theme.AppCompat.Light.NoActionBar"> 
</style> 

конечно, вы должны применять его в AndroidManifest.xml:

<activity 
    android:name=".activities.ActivitySplash" 
    android:theme="@style/AppBaseThemeNoActionBar"> 
</activity> 

Документация: http://android-developers.blogspot.be/2014/10/appcompat-v21-material-design-for-pre.html

-1

Перейти к Вашим манифестам папок и открытого AndroidManifest.xml

Поиск строки по прикладному тегу, который говорит,

android:theme 

Здесь поместить любого из темы, которая делает не имеют Action Bars.

Вот и все!

0

Вместо расширения для ActionBarActivity, extentds вашего MainActivity класса активности

т.е.
public class MyActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity); 


    } 
} 
Смежные вопросы