2013-04-30 81 views
0

您可以試試幫我理解我的Android風格和主題概念嗎?管理Android的分層樣式(育兒)

這裏是我的問題:我希望我的按鈕,根據下面的屬性行爲:style="?android:attr/buttonStyleSmall"

在這種情況下,該按鈕看起來是這樣的:this is how I want

因爲我的黑色背景,我覺得有我的按鈕上有一個白色的字體顏色,以獲得更好的對比度。我決定再在我的styles.xml文件中創建一個元素來覆蓋buttonStyleSmall風格,並添加這個白色字體,再加上一些其他的變化:

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

    <style name="MyTheme" parent="android:Theme.Holo.Light"> 
     <item name="android:buttonStyle">@style/ButtonText</item> 
    </style> 

    <style name="ButtonText" parent="@android:attr/buttonStyleSmall"> 
     <item name="android:layout_width">match_parent</item> 
     <item name="android:layout_height">match_parent</item> 
     <item name="android:textColor">#ffffff</item> 
     <item name="android:gravity">center</item> 
     <item name="android:paddingLeft">20dp</item> 
     <item name="android:paddingRight">20dp</item> 
     <item name="android:paddingTop">10dp</item> 
     <item name="android:paddingBottom">10dp</item> 
     <item name="android:textSize">14sp</item> 
     <item name="android:textStyle">bold</item> 
    </style> 

</resources> 

現在,我創建了一個名爲MyTheme主題,我打算申請我的整個申請。這樣我就不必在每次創建按鈕時都聲明按鈕的樣式。所以,我只會有按鈕的聲明是這樣的:

<Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Button" /> 

不幸的是,當我這樣做,這是我按鈕有:bad style

發生了什麼?我在我的樣式中聲明瞭父屬性,爲什麼按鈕中的灰色框消失了?它也不像一個按鈕(即:當我點擊它時,它不會改變顏色)。 如果我宣佈這樣的按鈕:

<Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     style="@style/ButtonText" 
     android:text="Button" /> 

的同樣的問題發生。

我在做什麼錯?

謝謝你們, 費利佩

回答

1

我相信你想從@android:style/Widget.Button.Small繼承。

這將父級指向實際的XML樣式定義,而@android:attr/buttonStyleSmall指向buttonStyleSmall的屬性而不是樣式本身。

+0

那麼,那個作品:-) 你是不是告訴我那麼屬性style =「?android:attr/buttonStyleSmall」是什麼意思?它是否只能用於XML? – 2013-04-30 18:54:03

+0

[樣式和主題](http://developer.android.com/guide/topics/ui/themes.html#PlatformStyles)指南的最後一段似乎將屬性(android:attr)描述爲XML屬性的可用選項,而風格(android:style)是實際的風格。我相信android:attr/buttonStyleSmall只是對風格的引用。 – 2013-04-30 18:59:20

+0

謝謝Tanis。非常感激 – 2013-04-30 19:00:05