我有这两个文件夹:values
和 values-v16
。 values
文件夹下的styles.xml
文件内容如下:
<style name="Widget.App.SearcherButtonWithIcon" parent="Widget.AppCompat.Button.Borderless">
<item name="android:paddingLeft">16dp</item>
</style>
和values-v16
文件夹包含相同的样式,但具有不同的paddingLeft
值:
<style name="Widget.App.SearcherButtonWithIcon" parent="Widget.AppCompat.Button.Borderless">
<item name="android:paddingLeft">26dp</item>
</style>
问题是后一个(具有 26dp 填充)应用于每个 API 版本中的每个 View 。为什么会这样,如何解决?
最佳答案
这是预期的行为。 values-v16 表示支持 api 16 或以上的设备。您可以在文档中阅读更多相关信息:Providing alternative resources
如果您只希望在 api 16 中使用它,请在 api 17 中使用默认值再次覆盖它。
这是我推荐的方法:
/res/values/styles.xml
<dimen name="searcher_padding_left_default">16dp</dimen>
<dimen name="searcher_padding_left_v16">26dp</dimen>
<dimen name="searcher_padding_left">@dimen/searcher_padding_left_default</dimen>
/res/values-v16/styles.xml
<dimen name="searcher_padding_left">@dimen/searcher_padding_left_v16</dimen>
/res/values-v17/styles.xml
<dimen name="searcher_padding_left">@dimen/searcher_padding_left_default</dimen>
通过这种方式,您只需在一处指定值,这可能有助于将来保持所有值的同步。
关于Android:API-16 的样式泄漏到每个更高的 API 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39507396/