XamarinForms 系列課程

特別說明

2017/01/26

Xamarin FAQ 1-25 : 如何變更 Android 應用程式的狀態列背景與文字顏色

問題

當您在規劃一個 Xamarin.Forms 的應用程式的時候,都會制訂一套配色規則,並且每個頁面與控制項,都會依照這套視覺設計規範,進行套版設計;可是,當您在 Android 平台執行這個應用程式時候,卻發現到狀態列的背景與文字顏色似乎沒有地方可以修改,這該如何處理呢?

解答

您需要在 Android 原生專案內找到這個應用程式的進入點
請開啟 MainActivity.cs 檔案,找到 MainActivity 這個類別的定義處,在 MainActivity 的上方,加入了 Theme = "@style/MyTheme.Base" 這樣的宣告,表示這個應用程式要使用這個 XML 內定義的樣式配置定義。
    [Activity(Theme = "@style/MyTheme.Base", //Indicates the theme to use for this activity
        Label = "你的應用程式名稱",
               MainLauncher = true, //Set it as boot activity
        ScreenOrientation = ScreenOrientation.Portrait)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        ...
    }
接著,請在原生 Android 專案內,找到 Resources > values > styles.xml 檔案,將這個檔案置換成為底下內容,在這裡,您就會看到了 MyTheme.Base 的定義。
<resources>
  <style name="MyTheme" parent="MyTheme.Base">
  </style>
  <style name="MyTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primaryDark</item>
    <item name="colorAccent">@color/accent</item>
    <!--<item name="android:windowBackground">@color/window_background</item>-->

    <item name="android:windowBackground">@drawable/splash</item>
    <item name="android:windowNoTitle">true</item>
  </style>
</resources>
而在 MyTheme.Base 定義內,使用到許多的顏色定義,這個時候,請找到 Resources > values > colors.xml 檔案,將這個檔案置換成為底下內容,這裡就是定義 Android 應用程式狀態列的背景與文字顏色的地方。
<resources>
  <color name="primary">#223344</color>
  <color name="primaryDark">#aabbcc</color>
  <color name="accent">#998877</color>
  <color name="window_background">#168168</color>
</resources>

沒有留言:

張貼留言