【问题标题】:How to give custom package name for an item, of a style in android?如何为项目提供自定义包名称,在android中的样式?
【发布时间】:2017-01-13 09:30:52
【问题描述】:

文档说,要定义的样式属性的名称,必要时带有包前缀(例如 android:textColor)。

 <style name="ToolbarTitle" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title">
        <item name="android:textSize">20sp</item>
    </style>

但我在 attrs.xml 中有自定义样式

  <attr name="switchStyle1" format="reference" />
    <declare-styleable name="Switch">
  </declare-styleable>

现在如何在我的自定义样式中使用它

 <style name="AppThemeDark" parent="@android:style/Theme.DeviceDefault">
        <item name=":switchStyle">@style/switch_dark</item>
    </style>

如何在android中给一个项目的自定义包名称,一个样式?

【问题讨论】:

    标签: android android-layout android-styles


    【解决方案1】:

    你没有。前缀(应该称为命名空间)是您自己设置的,通过添加到您的布局:

    xmlns:app="http://schemas.android.com/apk/res-auto"
    

    在上面的示例中,app 是您的命名空间。然后你在布局中使用它,即

    <Foo app:switchStyle="@style/switch_dark" />
    

    在样式的情况下,当引用自定义属性时,您根本不使用命名空间:

    <style name="AppThemeDark" parent="@android:style/Theme.DeviceDefault">
       <item name="switchStyle">@style/switch_dark</item>
    </style>
    

    并且由于命名空间对于项目中的所有库都是全局的,因此重要的是使名称唯一以避免与其他库冲突(这就是为什么它们中的大多数前缀属性名称,即:

    <attr name="abc_switchStyle" format="reference" />
      ...
    

    并使用:

    <Foo app:abc_switchStyle="@style/switch_dark" />
    

    PS:在您的代码中创建switchStyle1 属性,但引用switchStyle。

    【讨论】:

    • 顺便问一下,我可以知道 format="reference" 是什么意思吗?
    • 表示该值可以作为其他值的参考。即color可以是RGB或作为参考,指定为@color/xxx
    【解决方案2】:

    就这样使用吧:

    <style name="AppThemeDark" parent="@android:style/Theme.DeviceDefault">
        <item name="switchStyle1">@style/switch_dark</item>
    </style>
    

    如果您使用样式属性,则不需要使用任何包前缀

    【讨论】:

      猜你喜欢
      • 2016-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      • 1970-01-01
      • 2020-12-28
      • 2020-10-08
      相关资源
      最近更新 更多