【问题标题】:Use XML attribute paddingHorizontal on pre API 26 devies?在 API 26 之前的设备上使用 XML 属性 paddingHorizo​​ntal?
【发布时间】:2017-11-11 12:58:08
【问题描述】:

API 26 (Android O) 中引入的 XML 属性 android:paddingHorizontal 是否仅在 26 及更高版本中可用?有支持版本吗?我要求我的minSdkVersion 远低于 26。

我的印象是,Android Studio 3 中包含的 Android Asset Packaging Tool 2.0 (AAPT2) 可能会对此有所帮助。

来自发行版 AAPT2 发行说明:

2.16 版

aapt2 链接 ...

XML 文件的版本控制更加智能,它使用一小组规则将特定的较新属性降级为向后兼容的版本。例如:android:paddingHorizo​​ntal 降级为 android:paddingLeft 和 android:paddingRight。

但不知道如何使用 AAPT2,我没有找到太多关于如何告诉你的信息,我只是看到提到它。我的要求是否可行?

非常感谢任何帮助/答案。

更新:是的,它不适用于较低的 SDK 版本。

【问题讨论】:

    标签: android xml android-studio-3.0 aapt android-8.0-oreo


    【解决方案1】:

    尽管API 26 (Android O) 中引入了paddingHorizontalpaddingVerticallayout_marginHorizontallayout_marginVertical,但由于aapt2 执行的脱糖(在@987654322 中添加),它们可以在针对旧SDK 版本时安全使用@) 在构建时自动将它们转换为左/右或上/下。

    注意:遗憾的是,样式不支持(也不计划支持)(ref)。

    【讨论】:

      【解决方案2】:

      paddingHorizo​​ntal 和 paddingVertical 确实是在 API 26 (O) 中引入的。证明见 Android O 更新说明:https://developer.android.com/about/versions/oreo/android-8.0

      【讨论】:

      • 是的,这不是假的,但问题清楚地表明我们知道它是在 android O (api 26) 中引入的......但是只有当您的 minSdk 为 26 或更高时才能使用 xml 属性.
      【解决方案3】:

      为了处理这个警告,我更改了使用paddingToppaddingBottom 组合的属性,如下所示:

      android:paddingTop="16dp"   
      android:paddingBottom="16dp"
      

      【讨论】:

      • 是的,当然。只是好奇为什么这个 API 在较低的 SDK 中似乎可用,但在使用低于 O 的 minSDK 时会显示错误。
      【解决方案4】:

      我认为即使在 API 级别 10 中也支持 android:paddingHorizontal,如其 website 所示。

      【讨论】:

      • 为什么我在 Android Studio XML 编辑器上收到警告说它仅适用于 API 26 (O)?我的targetSDKVersion 设置为26,我的minSdkVERSION 设置为16?还有为什么有这么多网站解释“paddingHorizontal/Vertical”最终是如何使用 API 26 的?为什么这些博客/论坛/帖子会对一直存在的东西赞不绝口?
      • 我不知道为什么会出现警告,因为早在 API 级别 1 中就添加了 padding attribute。也许您需要清理构建,然后重新构建您的项目。还要检查 SDK 管理器中的所有必需组件是否已成功安装。
      • 当您向下滚动到特定的 paddingHorizontal/Vertical 属性时,您会看到“在 API 级别 26 中添加”的文字。
      • 我一直在清理和重建我的项目。我需要什么 SDK 组件...我的所有 buildTools、相关 API 源和支持库都是最新的...你是说我应该确保我明确地拥有 Android API 引用到 API 1?这听起来有点荒谬,因为它们是相互构建的……最后一件事你有没有尝试过这个并验证过这个工作?还是您只是提供您在网上找到的信息......?
      • 我尝试在我的项目中使用它。有两种解决方案: 1. 在标签中使用 alt+enter 创建一个新的 v21 XML 文件。 2. 将 Gradle 中的 minSDKVersion 更新为 26。我想知道如果我们希望我们的应用程序以少得多的 minSDKVersion 可供更多用户使用,为什么这是一个警告...
      猜你喜欢
      • 2018-04-18
      • 1970-01-01
      • 2017-11-14
      • 2014-12-21
      • 1970-01-01
      • 2017-08-12
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多