2013-12-14 56 views
1

我正在開發一個android應用程序,我想支持多個主題。 每個主題都會有不同的顏色組合。 如何以最少的代碼實現這一點。如何高效地在應用程序中實現多個主題?

有任何方式的selector幫助實現這一點?

例如,假設其中一項活動顯示動態項目列表。因此,不要在每個列表項&中分別列出背景中的列表視圖&中的主題,我不能只在一個地方提及主題,所有元素都會自動選擇適當的背景顏色等。

希望我的問題是清楚的。

謝謝你

+0

爲什麼不要在'styles.xml'中創建父主題,然後讓一些子主題擴展父主題,並對其進行一些更改。您可以在不同的活動中分別使用這些主題。 –

+0

您是否允許用戶更改主題? –

回答

0

我想出如何在應用中的多個外觀(主題)。您不僅可以更改顏色,還可以使用此方法完成佈局。這種方法的另一個好處是,您不會將所有皮膚(所有文件)發佈到您的應用中,而只是您在構建時選擇的那些皮膚。

如果您對誰想要的應用程序的定製外觀,但功能是相同的不同的客戶相同的應用程序需要使用此方案。

[Activity(Label = "TEST_SKINOV", MainLauncher = true, Icon = "@drawable/icon")] 
public class MainActivity : Activity 
{ 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     // Set our view from the "main" layout resource 
     #if SKIN_DEFAULT 
     SetContentView(Resource.Layout.Main); 
     #endif 
     #if SKIN_BLUE 
     SetContentView(Resource.Layout.MainSkinBlue); 
     #endif 
    } 
} 

用記事本編輯你的.csproj文件並添加皮膚名稱。 搜索「DefineConstants」,並添加你的皮膚的名字給它,像這樣:

<DefineConstants>TRACE;SKIN_DEFAULT</DefineConstants> 

而且所有皮膚特定的文件這樣做是爲了不包括他們的應用程序,以儘量減少應用程序的大小:

<ItemGroup Condition="$(DefineConstants.Contains('SKIN_DEFAULT'))"> 
<AndroidResource Include="Resources\layout\Main.axml"> 
    <SubType>Designer</SubType> 
</AndroidResource> 
</ItemGroup> 
相關問題