2011-08-18 47 views
0

我已經四處尋找這個問題的適當解決方案,但找不到一個。答案可能是這是不可能的,但我會再試一次,儘管許多類似的問題已經被提出。幫助在運行時爲視圖添加樣式。

我有一個視圖(它恰好是一個RatingBar,但它可能是一個按鈕或一個TextView或一個ImageView),我想要一個自定義樣式。根據,我希望它(例如)使用紅色星星,或藍色星星或橙色星星。我想在列表中使用此視圖和自定義列表適配器,以便基於基礎列表數據中的某個屬性,項目列表視圖顯示紅星評級欄或藍星評級欄或OrangeStar的RatingBar。我試圖從代碼構建一個樣式(選擇反映我想要的顏色星星的權利drawables),然後讓自定義ListAdapter創建一個新的RatingBar與適當的樣式(因爲視圖的樣式不能是在視圖創建後更改),但是當我這樣做時,RatingBar從不出現。我不確定這是否預期,或者如果我有其他問題。

這就像我想爲我的圖像選擇器的選擇器,或者我已經有的選擇器的另一個(自定義?)屬性。

如果我創建了一個CustomView,它擴展了RatingBar,它有一個額外的屬性,xml定義的Selector是否能夠訪問該屬性並使用它來選擇不同的圖像?

我想弄清楚這一點,因爲唯一可以替代的方法是不使用帶ListAdapter的ListView,這基本上導致我編寫更多的自定義代碼。

的思考?

回答

0

您是否嘗試過使用主題?您可以在styles.xml中爲RatingBar定義一個主題。在這個RatingBar主題中,你可以定義一個android:progressDrawable,它將引用一個drawable。創建多個主題,每個主題指向不同的drawable。有了這些不同的主題,您將能夠以編程方式設置RatingBar Widget android:style屬性以支持您創建的這些主題(紅色,藍色,綠色)。

+0

謝謝,我會嘗試一下,看看它是如何發展。 – aha

+0

任何運氣與主題? – icecreamman

+0

我不這麼認爲。主題適用於整個活動,而不是單個視圖。所以我不能在一項活動中使用我的3個評級欄,所有評級欄都有不同的顏色。但我並沒有完全放棄。 – aha