2015-02-24 58 views
0

我有一個活動和幾個片段的項目。片段被從活動中取代。主菜單片段不應該有操作欄,但操作欄應該保留在所有其他片段上。此外,默認的後退按鈕應該工作。我正在使用此代碼: getActivity()。getActionBar()。hide();來隱藏操作欄和顯示並隱藏片段中的操作欄

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

來顯示它。

但最讓我困惑的是主題。我應該使用哪個主題以獲得淺色背景,並且在擴展主題(如ThemeOverlay.AppCompat.ActionBar)時應該如何定義textColor,background等所有屬性?這個主題使UI變得混亂。 做這一切的最好方法是什麼?

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。調試器顯示操作欄爲空。以前我在使用Theme.AppCompat.Light.DarkActionBar時遇到同樣的問題。 – X0rrify 2015-02-24 17:41:11

+0

MainActivity是否必須擴展Activity類或ActionBarActivity類? – X0rrify 2015-02-24 17:49:00

+0

好吧,如果你使用Theme.AppCompat(它比Theme.Holo好,所以繼續使用它),你需要調用:Android.support.v7.app.ActionBar actionBar = getSupportActionBar();嘗試使用此代碼 – 2015-02-24 18:33:57