安卓私人风格使用



尝试继承Widget.TextView.ListSeparator样式,但现在aapt不允许这样做:

找不到与给定名称匹配的资源 'Widget.TextView.ListSeparator

因为谷歌把它保密了。但是我怎样才能组合两种样式:列表分隔符和边距?

样式 1

<style name="settings_plain_text">
<item name="android:layout_marginTop"> 10sp </item>
<item name="android:layout_marginBottom"> 10sp </item>
<item name="android:textSize"> 18sp </item>

样式 2

style="?android:attr/listSeparatorTextViewStyle"

我从这个链接复制答案:

大家好。我与负责aapt的框架团队进行了一些调查。 正在发生的事情是,某些样式,如WindowTitle不是公开的(你不会在Android中找到它们。R.style)。 您不应该扩展非公共资源。AAPT曾经让你这样做,但这是一个在平台工具R6中修复的错误。

问题是一旦编译,资源就会被分配一个整数。在这种情况下,您的自定义样式被分配一个整数,其父级通过父级整数引用。

对于框架,只有公共资源保证只有相同的整数,一个又一个构建。私有资源整数的整数将因生成而异。

这意味着您的自定义样式引用的父样式一旦安装在设备上就无效。它将引用其他资源或根本不引用任何资源,并且不会执行您想要的操作。

如果您希望重用私有样式,则应将该样式的内容复制到您自己的样式中,而不是扩展它。

我发现谷歌搜索的风格是这样的:

<style name="Widget.TextView.ListSeparator">
    <item name="android:background">@android:drawable/dark_header_dither</item>
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textColor">?textColorSecondary</item>
    <item name="android:textSize">14sp</item>
    <item name="android:gravity">center_vertical</item>
    <item name="android:paddingStart">8dip</item>
</style>

从中您可以修改边距。

相关内容

  • 没有找到相关文章

最新更新