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

How to give custom package name for an item, of a style in android?

文档说,要定义的样式名称 属性,必要时带有包前缀(例如 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 风格的商品指定自定义包装名称?

就这么用:

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

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

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

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.