2012-08-27 27 views
3

我有一個佈局,我用ListView中的行。在某些地方,我需要以「光線」風格和某些地方的「黑暗」來展示佈局。我如何使用Android樣式,主題等來完成此操作?造型整個佈局

我瞭解樣式的概念,但它看起來像只適用於單個元素。他們讓我定義了一組適用於具有該樣式的元素的屬性。我想要做的就是定義以下屬性:

  • 標題文本顏色(適用於TextView 1)
  • 字幕文本顏色(適用於TextView 2)
  • 背景(應用於父佈局)

回答

5

這是不可能set a style programatically,所以我創建一個主題,這個主題適用於需要它的活動。

創建屬性

添加設置樣式屬性res/values/attrs.xml像這樣:

<declare-styleable name="MyTheme"> 
    <attr name="titleColor" format="color" /> 
    <attr name="subtitleColor" format="color" /> 
    <attr name="backgroundDrawable" format="reference" /> 
</declare-styleable> 

MyTheme似乎並不需要涉及到任何東西。我懷疑這只是屬性的命名空間。

創建風格

res/values/styles.xml

<style name="MyTheme.LightRows"> 
    <item name="titleColor">@color/black</item> 
    <item name="subtitleColor">@color/grey</item> 
    <item name="backgroundDrawable">@drawable/cell_bg</item> 
</style> 

應用樣式活動

AndroidManifest.xml

<activity android:name=".view.activity.LightActivity" 
      android:theme="@style/MyTheme.LightRows" /> 

參考樣式屬性

在用於列表行(或其他)的佈局:

android:textColor="?attr/titleColor"