【Android】8.1 主題基本用法

來源:互聯網
上載者:User

標籤:

分類:C#、Android、VS2015;

建立日期:2016-02-17 一、建立本章樣本主介面

1、介面

2、MainActivity.cs檔案中對應的代碼

在CreateChItems()方法中添加下面的代碼:

    chItems.Add(new Chapter()    {        ChapterName = "第8章 樣式和主題",        ChapterItems = new ChItem[]        {            new ChItem { type = typeof(ch0801ThemeDemo1),                Title = "例8-1 主題基本用法",                Desc = "示範如何設定應用程式層級的主題和僅本頁使用的主題" },            new ChItem { type = typeof(ch0802ThemeDemo2),                Title = "例8-2 動態選擇和設定主題",                Desc = "示範如何動態選擇和設定僅當前介面使用的主題" },            new ChItem { type = typeof(ch0803ThemeDemo3),                Title = "例8-3 自訂佈景主題",                Desc = "示範如何自訂佈景主題及其樣式讓其更符合你的想法" },            new ChItem { type = typeof(ch0804ThemeDemo4),                Title = "例8-4 讓主題自適應不同的Android版本",                Desc = "示範如何讓不同的Android系統自動使用相應的主題" },        }    });

二、主題基本用法

1、查看主題

在.axml檔案的【設計介面】中,可直接觀察某種主題應用的效果。辦法如下:在對應的設計介面中,單擊【Theme】à【More Themes】,此時就會彈出所示的所有主題:

選擇某種主題,單機【OK】按鈕,它就會將所選主題應用到當前的設計介面中。

注意:這種方式僅僅是為了觀察採用哪種主題比較合適。確定了合適的主題後,還需要在資訊清單檔或者活動檔案中指定所選的主題,此時它才會真正起作用。

2、指定主題

有兩種指定主題(包括內建的主題和自訂佈景主題)的方式。

(1)在資訊清單檔中指定所有頁面預設使用的主題

以下兩種形式可任選其一,但不要兩種形式都去指定。

第一種方式是在properties檔案夾下的AndroidManifest.xml檔案中配置“應用程式層級”的主題,應用程式層級的主題對所有頁面都有效。例如:

<application android:label="MyApp"

      android:theme="@android:style/Theme.DeviceDefault.Light">

</application>

第二種方式是在properties檔案夾下的AssemblyInfo.cs檔案中配置應用程式層級的主題,應用程式層級的主題對所有頁面都有效。例如:

[assembly:Application(Theme = "@android:style/Theme.DeviceDefault.Light")]

(2)在Activity中指定本頁使用的主題

除了指定應用程式層級的主題外,還可以在某個活動中(.cs檔案中)指定僅適用於當前活動頁面的主題,用這種方式指定的主題僅對該活動有效,其他Activity仍會使用預設的主題。例如:

[Activity(Theme = "@android:style/Theme. DeviceDefault.Light.DarkActionBar",

Label = "MyApp", MainLauncher = true, Icon = "@drawable/icon")]三、材料主題(Material Theme)

材料(Material)也叫材質,學過3D開發的對Material這個概念肯定不陌生,不管中文怎麼翻譯它,記住就是這個英文單詞就OK了。

Material Theme是從Android 5.0(API 21)開始提供的內建主題,常用有:

  • Theme.Material – 黑色材質背景,這是Android 5.0預設的主題。
  • Theme.Material.Light –淺色材質背景。
  • Theme.Material.Light.DarkActionBar – 淺色材質背景,但活動條(ActionBar)是黑色的材質背景。

由於可以將材質設定為各種類型的圖形或映像,因此這種主題可提供非常大的靈活性。

使用Material Theme的要求

(1)必須安裝Android 5.0 (API 21)或更高版本的Android SDK。

(2)需要使用Java JDK 1.7或更高版本的JDK編譯Android應用程式。

(3)Xamarin.Android版本不能低於4.2。

由於前面章節介紹的安裝開發環境已經滿足了這些要求,所以可直接使用材質主題。

註:Xamarin for VS 4.0.1717對應的Xamarin.Android版本為6.0.0.35,可在VS2015中通過【協助】查看你當前安裝的Xamarin.Android版本。

下面的代碼示範了如何在應用程式層級使用材質主題(對所有Activity都有效):

<application android:label="MyApp"

    android:theme="@android:style/Theme.Material.Light">

</application>

也可以在AssemblyInfo.cs檔案中配置它。例如:

[assembly: Application(Theme="@android:style/Theme.Material.Light")]

下面的代碼示範了如何在Activity中使用材質主題(僅對該Activity有效):

[Activity(Label = "MyApp", MainLauncher = true, Icon = "@drawable/icon",

     Theme = "@android:style/Theme.Material.Light")]

public class MainActivity : Activity

{

    ……

}四、樣本-ch0801ThemeDemo

該樣本僅為了觀察分別指定應用程式層級的主題和僅適用於某個活動主題的效果。

1、運行

 

2、程式碼分析

從運行中可以看出,由於左圖沒有在ch0801ThemeDemo1.cs檔案中指定Theme,因此它使用的主題是資訊清單檔(AndroidManifest.xml)中定義的主題,以這種方式指定的Theme適用於所有頁面。

資訊清單檔(AndroidManifest.xml)中的相關代碼如下:

<application android:label="MyDemos"     android:theme="@android:style/Theme.DeviceDefault.Light.DarkActionBar">……</application>

ch0801ThemeDemo1.cs檔案的代碼如下:

using Android.App;using Android.OS;using Android.Widget;namespace MyDemos.SrcDemos{    [Activity(Label = "【例8-1】主題基本用法")]    public class ch0801ThemeDemo1 : Activity    {        protected override void OnCreate(Bundle savedInstanceState)        {            base.OnCreate(savedInstanceState);            SetContentView(Resource.Layout.ch0801_ThemeDemo1);            FindViewById<Button>(Resource.Id.btn1).Click += delegate            {                StartActivity(typeof(ch0801ThemeDemo2));            };        }    }}

對於運行中的右圖來說,由於在ch0801ThemeDemo2.cs檔案中指定了Theme,因此這個頁面使用的主題就是這個Theme,而不是資訊清單檔中指定的主題,但該Theme僅適用於這個頁面。

ch0801ThemeDemo2.cs檔案的代碼如下:

using Android.App;using Android.OS;using Android.Widget;namespace MyDemos.SrcDemos{    [Activity(Label = "【例8-1】主題基本用法",        Theme = "@android:style/Theme.DeviceDefault")]    public class ch0801ThemeDemo2 : Activity    {        protected override void OnCreate(Bundle savedInstanceState)        {            base.OnCreate(savedInstanceState);            SetContentView(Resource.Layout.ch0801_ThemeDemo2);            FindViewById<Button>(Resource.Id.btn1).Click += delegate {                StartActivity(typeof(ch0801ThemeDemo1));            };        }    }}

【Android】8.1 主題基本用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.