【问题标题】:Start/end & left/right for RTL languages in Android 4.2Android 4.2 中 RTL 语言的开始/结束和左/右
【发布时间】:2015-01-08 13:17:20
【问题描述】:

我正在尝试制作我的应用程序的布局,其中将包括对 RTL 语言的支持。目标 SDK 版本将是 15+。我在所有布局文件中都使用了 start/end as well 作为左/右,但是我注意到布局在 api 级别 17 (Android 4.2) 上无法正常使用 RTL 语言。 Api 级别 18 及以上似乎可以很好地处理双重定义(开始和左侧),所以我想知道为什么布局在 17 级混乱。根据下面的文字,我希望 17 级的行为与 18+ 相同.

Native RTL support in Android 4.2:

如果您将应用定位到 Android 4.2(应用的 targetSdkVersion 或 minSdkVersion 为 17 或更高),那么您应该 使用“start”和“end”而不是“left”和“right”。例如, android:paddingLeft 应该变成 android:paddingStart。

如果您希望您的应用可以使用低于 Android 4.2 的版本(该应用的 targetSdkVersion 或 minSdkVersion 为 16 或更少),那么您应该添加 除了“左”和“右”之外,还有“开始”和“结束”。例如,你会 同时使用 android:paddingLeft 和 android:paddingStart。

【问题讨论】:

  • 一种解决方法可能是为 api 17 及更高版本创建单独的布局文件,但肯定有更有效的方法来处理这个问题?
  • 这方面有什么进展吗?
  • 面临完全相同的问题。如果我删除 Left、Right,API 级别 17 上的布局会有所改进,但如果我同时使用 left 和 start、right 和 end,那么 API 级别 17 上的布局会变得混乱,但它在 17+ 上运行良好。我的应用支持 minSDK 8,所以我不能省略左右限定符。

标签: android android-layout arabic android-4.2-jelly-bean right-to-left


【解决方案1】:

为 17+ 制作单独的布局,如 layout-v17 并将默认布局放入布局中。在 layout-v17 中,您只需要在 padding、margin、drwableleft 等上替换 left->start 和 right->end。不要在 17 和 plus 上使用 left 和 right。

没有其他办法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2017-04-18
    • 1970-01-01
    • 2017-11-10
    • 2021-02-13
    相关资源
    最近更新 更多