問題
當您在規劃一個 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>