2013-01-05 176 views
3

提供樣式參數時是否可以引用枚舉值?
例如,我們可以這樣做:引用屬性枚舉值

<!-- layouts.xml --> 
<TextView 
    android:text="@string/str" /> 

<!-- values.xml --> 
<item type="string" name="str">hi</item> 

這正常工作與字符串,整數,尺寸等等,但我需要引用枚舉價值 - 例如visibility屬性。我在尋找類似:

<!-- layouts.xml --> 
<TextView 
    android:visibility="@????/viz" /> 

<!-- values.xml --> 
<item type="?????" name="viz">gone</item> 

visibility僅僅是一個例子 - 它可以是任何其他枚舉基於屬性。

我到目前爲止發現的唯一的解決方法是通過使用風格

<!-- layouts.xml --> 
<TextView 
    android:style="@styles/theStyle" /> 

<!-- styles.xml --> 
<style name="theStyle"> 
    <item name="android:visibility">gone</item> 
</style> 

但因爲它,如果你需要使用真正風格與TextViews這變得越來越複雜,這是某種限制特殊的樣式,它僅用於控制單個屬性。

另一種選擇是如果有方法可以引用個別樣式項目。例如:

<TextView 
    android:visibility="@styles/theStyle/visibility" /> 

但我認爲上述情況更不可能。

回答

3

每個枚舉實際上是一組命名整數。 例如,visibility屬性聲明如下:

<attr name="visibility"> 
    <enum name="visible" value="0" /> 
    <enum name="invisible" value="1" /> 
    <enum name="gone" value="2" /> 
</attr> 

所以,你可以通過它的價值直接引用到枚舉項。類似這樣的:

<!-- values.xml --> 
<item name="viz" type="integer">1</item> 

<!-- layouts.xml --> 
<TextView 
    android:visibility="@integer/viz"/> 

我剛在手機上檢查過它,它工作正常。

+0

謝謝!很棒!您仍然需要Android資源來查找枚舉值,但仍然比'style'解決方案好得多。出於好奇 - 你認爲有一種方法可以從現有風格中引用單個項目嗎?類似於android:visibility =「@ styles/theStyle/visibility」'? – Cleric

+0

我真的不認爲這是可能的 –

+0

好的。再次感謝! – Cleric