2015-02-24 3 views
0

У меня есть проект с одним действием и несколькими фрагментами. Фрагменты заменяются на активность. У фрагмента основного меню не должно быть панели действий, но панель действий должна сохраняться на всех остальных фрагментах. Также должна работать кнопка возврата по умолчанию. Я использую этот код: getActivity(). GetActionBar(). Hide();, чтобы скрыть панель действия иОтображение и скрытие панели действий в фрагментах

ActionBar actionBar = getActivity().getActionBar(); 
actionBar.setHomeButtonEnabled(true); 
actionBar.setDisplayHomeAsUpEnabled(true); 
actionBar.show(); 

для его отображения.

Но меня больше всего смущает тема. Какую тему я должен использовать, чтобы иметь светлый фон, и я должен определить все свойства, такие как textColor, фон при расширении темы, например ThemeOverlay.AppCompat.ActionBar? Эта тема сделала беспорядок для пользовательского интерфейса. Каков наилучший способ сделать все это?

styles.xml

<!-- Base application theme. --> 
<style name="AppTheme" parent="ThemeOverlay.AppCompat.ActionBar"> 
    <item name="actionBarStyle">@drawable/actionbar_background</item> 
</style> 

Спасибо.

ответ

0

Вам не нужно объявлять все свойства, почему вы не используете темы по умолчанию. Это пример того, как я это сделать:

<!-- Base application theme. --> 
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
</style> 

<!-- Application theme --> 
<style name="MyAppTheme" parent="android:Theme.Holo.Light.DarkActionBar"> 
    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    <item name="android:windowActionBar">true</item> 
    <item name="android:actionBarStyle">@style/ProjActionBar</item> 
</style> 
<style name="ProjActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">@color/action_bar_color</item> 
    <item name="android:titleTextStyle">@style/ProjActionBar.TitleTextStyle</item> 
</style> 
<style name="ProjActionBar.TitleTextStyle" parent="@android:style/TextAppearance"> 
    <item name="android:textColor">@color/action_bar_title_text_color</item> 
    <item name="android:textSize">18dp</item> 
</style> 

Другим способом, который я предпочитаю более это один:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
</style> 
<style name="AppTheme.MyTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
<!-- add custom atribute if you want --> 
</style> 
+0

Я вставил код XML и изменил имена цветовой переменные и побежал приложение. Но вызов getActivity(). GetActionBar(). Hide(); из MainMenuFragment.java выбрасывает исключение NullPointerException. Отладчик показывает, что панель действий имеет значение NULL. Раньше у меня была такая же проблема при использовании Theme.AppCompat.Light.DarkActionBar. – X0rrify

+0

Имеет ли MainActivity расширение класса Activity или ActionBarActivity? – X0rrify

+0

Хорошо, если вы используете Theme.AppCompat (его лучше, чем Theme.Holo, так что продолжайте его использовать) вам нужно позвонить: Android.support.v7.app.ActionBar actionBar = getSupportActionBar(); Попробуйте с этим кодом –

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