2014-11-14 73 views
1

我有一個應用程序和予限定於主題 「A」 和 「B」 的主題內的定義一組的樣式主題Android中被混合

<resources> 
<style name="Theme.A" parent="Theme.Base.AppCompat"> 
</style> 

<style name="btnMiniPlayer" parent="Theme.A"> 
    <item name="android:background">@drawable/image1</item> 
</style> 

<resources> 
<style name="Theme.B" parent="Theme.Base.AppCompat"> 
</style> 

<style name="btnMiniPlayer" parent="Theme.B"> 
    <item name="android:background">@drawable/image2</item> 
</style> 

所以我在我的應用程序中有一個按鈕屬性

style="@style/button" 

取決於我需要改變圖像的風格,我也在清單中設置了主題,但應用程序正在混合風格,所以現在我將「A」設置爲主要主題,但應用程序顯示主題「 B」。

任何想法???

+0

您是指發生某些事件時的按鈕(如按下按鈕),您想要更改按鈕樣式嗎? – 2014-11-14 15:33:44

+0

我的意思是,當應用程序啓動時,我在清單中設置了主題,但是我爲主題A設置了樣式,但應用程序正在從主題B中選擇樣式 – David 2014-11-14 15:40:58

+0

如果樣式具有相同的名稱,第二種樣式不會被覆蓋首先? – Lukos 2014-11-14 15:49:43

回答

0

我發現怎麼回答我的問題,所以你需要按照下面的步驟來修復它

1 - 創建我的情況屬性設置我喜歡myButton的名稱:

<declare-styleable name="def_Styles"> 
    <attr name="myButton" format="reference" /> 
</declare-styleable> 

2。在每一個主題(「A」和「B」),你必須定義項目

<resources> 
<style name="Theme.B" parent="Theme.Base.AppCompat"> 
    <item name="myButton">@style/CustomButtonB</item> 
</style> 

<style name="CustomButtonB" parent="Theme.B"> 
    <item name="android:background">@drawable/image2</item> 
</style> 

3-在視圖中只設置樣式爲正確的屬性

style="?myButton" 

如果您在A和B之間的清單中更改主題,它將會工作

0

做這樣的事情:

<style name="button" parent="A"> 
    <item name="android:background">@drawable/image</item> 
</style> 

繪製/ image.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="false" android:drawable="@drawable/image1" /> 
    <item android:state_pressed="true" android:drawable="@drawable/image2" /> 
</selector> 

也有類似的事情:

android:state_selected="true" 
+0

中的圖像,他有兩個父主題A和B. ..這將僅適用於... – 2014-11-14 15:42:22

+0

工作是我父母 <樣式名稱= 「Theme.A」 父= 「Theme.Base.AppCompat」> <樣式名稱= 「btnMiniPlayer」 父=「主題。A 「> <項名稱=」 機器人:背景 「> @繪製/ image1的 <樣式名稱=」 Theme.B」父= 「Theme.Base.AppCompat」> David 2014-11-14 15:48:03