如何为android中的样式的项目提供自定义包名称?

时间:2017-01-13 09:30:53

标签: android android-layout android-styles

文档说明,要定义的样式属性的名称,必要时带有包前缀(例如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中的样式的项目提供自定义包名称?

2 个答案:

答案 0 :(得分: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>

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

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

并使用:

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

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

答案 1 :(得分:0)

只需这样使用:

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

如果您使用样式属性

,则无需使用任何包前缀