1

如何?android:attr/在 API 7 中使用 xml 元素?对于 API 15,它按预期工作,但较旧的会抛出错误。

<TextView
    ...
        android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
        android:paddingRight="?android:attr/listPreferredItemPaddingRight"
        android:minHeight="?android:attr/l  istPreferredItemHeightSmall" />
4

2 回答 2

0

我认为这些是在ICS(14) 中引入的,因此您不能在以前版本的Android. 您可以随时查看它们指向的值(或引用)并直接在您的设备上使用它们,Views并为不同版本的 android 提供不同的布局。

于 2012-05-20T15:35:24.950 回答
0

如果您的目标是最低 API 级别 7,但取决于 API 15 的支持,这在很多情况下都不起作用。

现在已经说过,有一些属性可以在较低和较高 API 之间很好地转换,但很多都依赖于相应的 API 支持,因此您必须对此进行测试。

我的方法是选择我最低的 API,但使用更高的 API 构建并包含对较低 API 的支持包,从而提供一些更高级别的支持(例如片段)

要查看是否会遇到任何问题,您可以在清单中将最低 API 设置为 7,并在项目的 android 属性中添加 API 15。

然后使用 API 7 构建并部署到模拟器,如果效果很好,否则您将需要找到一种不同的方法来完成您想要完成的工作以支持这两个平台。

您还可以为不同的 API 级别创建不同的布局,您还可以在运行时检查某个类/方法在使用之前是否受支持,但这会给您的代码增加很多开销。

这需要小心,因为它很容易包含,并且 API 无法在您选择支持的最低级别上工作,但会错过在您的模拟器测试中得到锻炼的机会。

当我觉得我必须这样做时,我的方法是使用最低的 API 级别(项目中的 API 属性)进行编译,并确保所有这些情况都是已知的,并通过版本控制布局在代码中处理,或者被理解并已被执行

然后切换回更高的 API,您必须自律地执行此操作,否则可能会在发布时面临崩溃的风险,老实说,这通常不值得付出努力,因为您几乎总能找到 x-api 工作,但每种情况都不同。

于 2012-05-20T15:40:43.627 回答