尝试继承Widget.TextView.ListSeparator
样式,但现在aapt不允许这样做:
找不到与给定名称匹配的资源 “Widget.TextView.ListSeparator
因为谷歌将其设为私有。但是我如何组合两种样式:ListSeparator和margin?
风格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"
答案 0 :(得分:6)
我复制了link的答案:
大家好。我做了一些调查负责aapt的框架团队。 发生的事情是一些样式,如WindowTitle不公开(你不会在android.R.style中找到它们)。您不应该扩展非公共资源。 aapt曾经让你这样做,但这是一个在平台工具r6中修复的错误。
问题是,一旦编译,资源就会被赋予一个整数。在这种情况下,您的自定义样式将分配一个整数,其父级将通过父整数引用。
对于框架,只保证公共资源只有相同的整数,构建后构建。私有资源整数的整数将从构建更改为构建。
这意味着您的自定义样式引用的父级一旦安装在设备上,将无效。它会引用另一个资源或根本不引用任何资源,它不会做你想要的。
如果您希望重复使用私有样式,则应将该样式的内容复制到您自己的样式中,而不是将其扩展。
我发现谷歌搜索的风格是that one:
<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>
由此您可以修改边距。