代码之家  ›  专栏  ›  技术社区  ›  emmby

在Android中引用XML中的枚举样式属性

  •  5
  • emmby  · 技术社区  · 14 年前

    我有一个应用程序需要在一个横向方向启用滚动条,而不是在纵向方向启用。我认为最简单的方法是创建一个属性来指示是否启用滚动条,例如:

    <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').
    

    显然,它将“无”视为字符串而不是枚举值。而不是用“无”我试过类似的东西?android:attr/scrollbars/none“,”android:attr/none“,等等,但这些都不起作用。

    如何将“无”值指定为枚举值而不是字符串?

    1 回复  |  直到 14 年前
        1
  •  11
  •   Rich Schuler    14 年前

    我相信你有你的 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" 并在 阿特尔 标签本身。