我有一个应用程序,要求在一个横向方向启用滚动条,但不能在纵向方向启用滚动条.我认为最简单的方法是创建一个属性,指示是否启用滚动条,如下所示:
<ScrollView
a:layout_width="fill_parent"
a:layout_height="fill_parent"
a:scrollbars="?my_activity_scrollbars"
a:fadingEdge="none"
>
Run Code Online (Sandbox Code Playgroud)
然后,我将为横向和纵向模式定义属性的单独值.看似容易.
所以我在attrs.xml中定义了这个属性:
<resources>
<declare-styleable name="Theme">
<attr name="my_activity_scrollbars" format="enum" />
</declare-styleable>
</resources>
Run Code Online (Sandbox Code Playgroud)
并将其添加到我的应用程序的styles.xml:
<style name="MyApp" parent="@android:style/Theme.Light">
<item name="add_credit_card_scrollbars">none</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试编译我的应用程序时,我收到以下错误:
styles.xml:8: error: Error: String types not allowed (at 'my_activity_scrollbars' with value 'none').
Run Code Online (Sandbox Code Playgroud)
很明显,它将"none"视为字符串而不是枚举值.而不是使用"无"我尝试了"?android:attr/scrollbars/none","?android:attr/none"等等,但那些没有用.
如何将"none"值指定为枚举值而不是字符串?
Ric*_*ler 11
我相信你的attr定义设置不正确:
这是来自android源码的attr enum:
<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>
Run Code Online (Sandbox Code Playgroud)
看来你没有定义format="enum",而是在attr标签本身中指定枚举值.
| 归档时间: |
|
| 查看次数: |
4295 次 |
| 最近记录: |