假設我正在創造一些新風格的屬性。我宣佈他們正是如此(這是how the documentation says to do it:聲明樣式的要點是什麼?
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="TriangleView">
<attr name="direction">
<enum name="NE" value="0" />
<enum name="NW" value="1" />
<enum name="SW" value="2" />
<enum name="SE" value="3" />
</attr>
</declare-styleable>
<declare-styleable name="BannerView">
<attr name="direction">
<enum name="NE" value="0" />
<enum name="NW" value="1" />
<enum name="SW" value="2" />
<enum name="SE" value="3" />
</attr>
<attr name="thickness" format="dimension" />
</declare-styleable>
</resources>
但是,這不會工作,因爲所有的屬性顯然是在同一個命名空間,我得到的錯誤Error: Attribute "direction" has already been defined
因此很明顯,我必須移動。在<declare-styleable>
這樣的外部顯然複製屬性:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="direction">
<enum name="NE" value="0" />
<enum name="NW" value="1" />
<enum name="SW" value="2" />
<enum name="SE" value="3" />
</attr>
<declare-styleable name="BannerView">
<attr name="thickness" format="dimension" />
</declare-styleable>
</resources>
但是這會帶來兩個問題:
- 如果這能起作用,
<declare-styleable>
的含義是什麼? - 如果我希望屬性在不同視圖中表現不同,該怎麼辦?例如,如果
BannerView
的方向只能是up
或down
。
真棒,實際上幫助我以及在應用程序庫中定義的attr!所以基本上,如果已經定義了attr,它應該用在declare-styleable中,而不要試圖覆蓋格式。酷酷酷。 – Redwarp