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

man*_*war 20 eclipse android warnings right-to-left

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

"该项目引用了RTL属性,但未明确启用或禁用对清单中的android:supportsRtl的RTL支持"

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

谢谢

Ben*_*enL 40

如果你不支持RTL(=从右到左的语言环境),则需要更换的所有引用开始最终通过在你的XML布局.

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

具体而言,"开始"意味着"正确",如果:

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

否则意味着"离开".

因此,如果您在任何布局中使用了android:layout_gravity ="start"或任何start/end属性,并且未在清单中设置android:supportsRtl ="true",则会收到此警告.

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

  • 如果你用left替换start,你将收到警告:使用"start"而不是"left"来确保从右到左语言环境中的正确行为 Id = RtlHardCoded
  • 如果将android:supportsRtl设置为false:属性"supportsRtl"仅用于API级别17及更高级别(当前min为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

  • @Gofilord:.segaugnal RTL ni daer ot drah yrev gnihtyreve ekam dluow tahT (11认同)