2010-07-01 80 views
5

我有一個應用程序需要在一個橫向方向上啓用滾動條,但不是縱向方向。我認爲這樣做是使顯示滾動條是否被啓用與否,如下列屬性的最簡單的方法:在Android中引用XML中的枚舉樣式屬性

<ScrollView 
     a:layout_width="fill_parent" 
     a:layout_height="fill_parent" 
     a:scrollbars="?my_activity_scrollbars" 
     a:fadingEdge="none" 
     > 

然後,我會定義爲橫向和縱向模式的屬性不同的值。看起來很簡單。

所以我再attrs.xml定義這個屬性:

<resources> 
    <declare-styleable name="Theme"> 
    <attr name="my_activity_scrollbars" format="enum" /> 
    </declare-styleable> 
</resources> 

並將其添加到我的應用程序的styles.xml:

<style name="MyApp" parent="@android:style/Theme.Light"> 
    <item name="add_credit_card_scrollbars">none</item> 
</style> 

然而,當我嘗試編譯我的應用程序,我得到以下錯誤:

styles.xml:8: error: Error: String types not allowed (at 'my_activity_scrollbars' with value 'none'). 

看來很清楚,它將「none」視爲字符串而不是枚舉值。我沒有使用「none」,而是嘗試了諸如「android:attr/scrollbars/none」,「?android:attr/none」等等,但這些都不起作用。

如何將「none」值指定爲枚舉值而不是字符串?

回答

11

我相信你有你的attr定義設置不當:

這是從Android源生成的attr枚舉:

<attr name="ellipsize"> 
    <enum name="none" value="0" /> 
    <enum name="start" value="1" /> 
    <enum name="middle" value="2" /> 
    <enum name="end" value="3" /> 
    <enum name="marquee" value="4" /> 
</attr> 

看來你沒有定義format="enum"而是指定範圍內的枚舉值attr標籤本身。

+0

這是完全正確的,感謝Qberticus – emmby 2010-07-01 21:07:19

+2

爲了澄清,我改變了我的attrs.xml到' <申報,設置樣式名稱= 「主題」> <枚舉名=「無「值=」 0" ×00000000 /> <枚舉名稱= 「垂直」 值= 「0x00000200」/> '(複製從$ ANDROID_SDK /平臺/機器人枚舉值 - */data/res/values/attrs.xml),一切都很好。 – emmby 2010-07-01 21:09:33

+0

@emmby非常感謝您的問題和以上評論。但我更喜歡十六進制值的整數值:-) - 再次感謝! – 2012-05-31 07:57:58