【问题标题】:textView for rtl and ltr (API 14)rtl 和 ltr 的 textView (API 14)
【发布时间】:2019-03-09 13:44:27
【问题描述】:

我有一个 TextViewandroid:paddingRight,我想支持 API 14

        <TextView
            android:id="@+id/account_name"
android:paddingEnd="@dimen/account_menu_chevron_size_plus_margin"
            android:ellipsize="end"
            android:gravity="center_vertical"
            android:lines="1"
android:paddingRight="@dimen/account_menu_chevron_size_plus_margin"/>

我想创建两个布局(RTLLTR)。

我看到这个post 是关于LTRRTLdrawables

但是我将如何处理 merge 和布局 xml 的文件夹?

【问题讨论】:

  • 你能澄清你的问题吗?你想在两个方向的同一侧有填充还是你想改变它?很少需要两个方向的单独布局
  • 是的,我已经添加了代码。对不起
  • 根据 android 文档,如果您希望 API 17 以下的 RTL 支持,您必须添加 android:paddingRight 以及 android:paddingEnd 并且并行我不认为您必须为此创建两个布局.请添加与您的问题相关的图片以便更好地理解。
  • 但是当 API 14 和 rtl 忽略 paddingEnd 时会发生什么?那么我需要对齐 paddingLeft 吗?

标签: android layout right-to-left direction


【解决方案1】:

如果你想在右边有填充而不考虑布局的方向,你应该使用paddingRight 但是如果你想在右边有填充 ltr 布局但在左边 fot rtl 布局你应该使用@987654323 @。

这同样适用于ConstraintLayout 中的边距和约束

【讨论】:

  • 是的,但我想支持 API 级别 14。TextView 属性
  • here 所述,如果您的目标 API 低于 17,则应使用 startleft 两个属性以及 endright
  • 但是对于 api14 android 忽略“end”,我需要选择 left(rtl) 和 right(ltr)
  • 是的。我的建议是针对 api 17+,因为所有 Android 设备中只有 1.7% 低于该标准。这不值得你投入其中。
  • 是的,我认为您不必担心这一点。甚至 android 系统本身也不支持 api 17 之前的 RTL 布局。您可以实现的唯一方法是为每个配置制作单独的布局,然后基于语言环境提供该布局。 BaseActivity 和 BaseFragment 之类的东西有两个抽象方法,例如 provideLayoutprovideRtlLayout。他们会决定给哪一个充气。
猜你喜欢
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-12
  • 2015-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多