该项目引用RTL属性,但未明确启用或禁用RTL支持

时间:2014-12-09 12:25:22

标签: android eclipse warnings right-to-left

在Eclipse清单文件中,我收到一条警告消息。申请语言为土耳其语(不是从左到右)。

“项目引用RTL属性,但没有明确启用或禁用对清单中的android:supportsRtl的RTL支持”

我无法添加 android:supportsRtl 行,因为我的min sdk versionn是9。 这个警告很重要吗?

由于

1 个答案:

答案 0 :(得分:39)

如果您不支持RTL(=从右到左区域设置),则需要将开始的所有引用替换为结束在xml布局中通过正确

属性“start”,“end”,“paddingStart”,“paddingEnd”,“android:layout_alignParentStart”等等都是“RTL属性”:它们的含义取决于当前的语言环境。不这样做的风险是,如果有人将他们的系统语言设置为阿拉伯语或希伯来语,即使文本仍以土耳其语显示,您的布局也会被镜像。

具体而言,“开始”在以下情况下表示“正确”:

  • 当前的系统语言是RTL (阿拉伯语,希伯来语......)
  • 并且Android设备是 API 17或更高版本
  • 清单
  • AND android:supportsRtl 设置为 true

否则意味着“离开”。

如果您在任何布局中使用 android:layout_gravity =“start”或任何开始/结束属性并且未设置 android:supportsRtl =“,那么您会收到此警告真实的“在清单中。

请注意,如果您的min SDK为16或更低且您不想支持RTL,则实际上您必须选择以下警告之一:

  • 如果您使用左侧替换start,则会收到警告:使用“start”而不是“left”来确保从右到左区域设置的正确行为 Id = RtlHardCoded < /强>
  • 如果您将 android:supportsRtl 设置为 false 属性“supportsRtl”仅用于API级别17及更高级别(当前最小值为9)。 ID = <强> UnusedAttribute
  • 否则:**项目引用RTL属性,但没有在清单中明确启用或禁用android:supportsRtl的RTL支持** Id = RtlEnabled

如果您不支持RTL,将 RtlHardCoded 设置为Info而不是警告似乎合乎逻辑。

更多信息:

http://android-developers.blogspot.co.il/2013/03/native-rtl-support-in-android-42.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+blogspot/hsDu+(Android+Developers+Blog)

http://developer.android.com/guide/topics/manifest/application-element.html#supportsrtl