簡體   English   中英

Android SDK:無法設置支持庫的ActionBar樣式

[英]Android SDK: Can't style ActionBar of support library

出於某種原因,在實現support-v7時,無法使用style.xml設置操作欄的樣式。

我有兩個樣式文件。 這是來自values文件夾的style.xml:

<resources>

    <color name="primary">#009688</color>
    <color name="primaryDark">#00796B</color>

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/myActionBar</item>
    </style>

    <style name="myActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">@color/primary</item>
    </style>

</resources>

值-v21中的棒棒糖樣式如下:

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:colorPrimary">@color/primary</item>
        <item name="android:colorPrimaryDark">@color/primaryDark</item>
    </style>
</resources>

這里發生了什么:

1)默認情況下,我的應用從support-v7庫實現android.support.v7.app.ActionBarActivity。 當我啟動它時:

a)在Android 4.4上,操作欄未着色,就像以前一樣是黑暗的。

b)在Android 5設備上,它也不是彩色的,但是狀態欄會變為彩色。

因此,操作欄樣式不適用於support-v7的欄。 即使將全局textColor參數設置為明亮的值,每個文本也會更改顏色,但只有我的應用程序標題保持白色。

但是,我仍然可以在代碼中為其着色: getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#673AB7")))

2)如果我為我的應用實現了android.app.Activity(不是android.support.v7.app.ActionBarActivity):

a)棒棒糖設備獲得整潔的綠色操作欄和整潔的綠色狀態欄。 b)但在4.4動作條上完全消失。

我嘗試使用主題標簽上的values / style.xml中的這些樣式參數將其恢復,但是它們都不起作用:

<item name="android:windowActionBar">true</item>
<item name="android:displayOptions">showTitle</item>

最小SDK設置為15。

如何在兩個平台上獲取樣式化的操作欄?

遵循本指南

1)您的所有活動都必須從ActionBarActivity擴展,而ActionBarActivity從v4支持庫的FragmentActivity擴展,因此您可以繼續使用片段。

2)刪除values-v21 / themes.xml並僅保留values / themes.xml

3)告訴Android將工具欄用作ActionBar:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

4)在您的style.xml中,替換

<style name="myActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@color/primary</item>
</style> 

<style name="myActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@color/primary</item>
</style>

只需將它們設置為values / style.xml中的自定義基本主題

 <item name="colorPrimary">@color/your_primary_color</item>
 <item name="colorPrimaryDark">@color/your_primary_dark_color</item>
 <item name="colorAccent">@color/your_accent_color</item>
 <item name="windowActionBar">false</item>
 <item name="android:windowActionBar">false</item>
 <item name="android:windowNoTitle">true</item>

並使用android.support.v7.widget.Toolbar 確保您使用的是支持庫v21或更高版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM