gpt4 book ai didi

android - 关于 paddingStart 使用的冲突 lint 消息

转载 作者:IT王子 更新时间:2023-10-29 00:09:59 29 4
gpt4 key购买 nike

API 17/RTL 支持发布后,我在 list 中添加了以下内容

android:supportsRtl="true"

这导致 Lint 在我的 View 中有 paddingLeft/Right 的地方正确地给了我这些警告:

  • Consider adding android:paddingStart="8dp" to better support right-to-left layouts

  • Consider adding android:paddingEnd="8dp" to better support right-to-left layouts

我是按照 android-developers blogpost 中的指导进行的,这意味着我们不需要创建新的 layout-v17 文件,而是可以同时使用 paddingStart/End 以及 paddingLeft/Right 属性(需要 Left/Right 才能继续支持较低的 minSdk)。


我刚刚从以前的 Beta 版本更新到 Android Studio 1.0,并注意到一个新的 lint 错误,其中指出:

  • Attribute paddingStart referenced here can result in a crash on some specific devices older than API 17 (current min is 7)

建议的修复方法是:

Override Resource in layout-v17

这是有道理的。但是,在创建 layout-v17 并从主布局文件夹中删除未使用的 paddingStart/End 之后,原始的 Lint 警告再次出现,说我应该使用 paddingStart/End。它似乎不明白我已经覆盖了 layout-v17 中的文件。

有谁知道如何解决看似冲突的 Lint 错误/警告消息?我知道我可以 tools:ignore 警告,但我希望有一个“正确”的解决方案。


编辑(1/19/15):有一个 android issue我想这会导致新的 lint 错误被添加到 Android Studio 中。这表明“某些特定设备上的崩溃”是指 API16 上的少数三星平板电脑,其中 paddingStart 有自己的定义,因此在尝试解析“8dp”时会崩溃。

上面链接中有人建议使用 layout-ldrtl 文件夹来处理 rtl 方向,而不是使用 paddingStart 和 paddingEnd。

每当您发现用户拥有 API16 平板电脑时,我还建议在其他地方覆盖 LayoutInflator 的 Factory2,然后手动设置所有 View 的属性。这肯定会起作用,但它似乎非常“手动”。

不幸的是,我无法访问这些崩溃的设备之一,所以我无法验证为什么我没有找到任何在线建议简单地将 paddingStart 放在/layout-v17/文件夹中并将 paddingLeft 放在/layout/中的人?尽管 paddingStart 仅存在于 layout-v17 中,但 API16 三星平板电脑是否仍会继续崩溃?

最佳答案

您对问题的根本原因是正确的 - 三星为 paddingStartpaddingEnd 保留的 id 定义了一个自定义属性。

我绕过它的方法是提取填充属性并将它们放入样式中。因此,我没有为 SDK<17 和 SDK>=17 设置不同的布局,而是为它们设置了不同的样式(在 valuespaddingStart&End 中使用 paddingLeft&Rightvalues-v17)。

这样,Lint 将不再提示它。

关于android - 关于 paddingStart 使用的冲突 lint 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27449776/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com