文档说明,要定义的样式属性的名称,必要时带有包前缀(例如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中的样式的项目提供自定义包名称?
答案 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>
如果您使用样式属性
,则无需使用任何包前缀