【发布时间】:2018-11-17 00:17:31
【问题描述】:
我有一个带有文本视图的布局。 每当我使用从左到右语言环境 OR 删除 android:hint 元素时,它都能正常工作。但是,在具有 LTR 值(英文文本)和重力 =“start”或“end”的 RTL(希伯来语语言环境)中,它只是将文本推入错误方向的提示大小的文本视图中。举个例子可能会更清楚:
LTR 语言环境和文本:
带有提示的 RTL 语言环境和 LTR 文本 - 这里带有重力“end”的“Data A”字段将其推到右侧而不是左侧,因为它是英文的。 “数据B”具有重力“开始”,所以情况相同,只是相反:
提示是一个重要问题,因为当我删除它们时,wrap_content 会缩小视图,布局约束会发挥作用,即使在 RTL 中也能正确显示
基本上,我的问题是如何使文本视图的重要性始终在语言环境的末尾或开头起作用,而不是文本的语言
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/LogEntryListViewItemStyle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"><!--TODO-->
<ImageView
android:id="@+id/LogEntryListSelectedFieldField"
android:layout_width="wrap_content"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/Number"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:gravity="center"
android:paddingStart="10dp"
android:paddingEnd="10dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/LogEntryListSelectedFieldField"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/DataB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:gravity="start"
app:layout_constraintStart_toEndOf="@+id/Number"
app:layout_constraintTop_toTopOf="parent"/>
<TextView
android:id="@+id/LogEntryListItemDateTimeField"
style="@style/LogEntryListItemDateStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:gravity="end"
app:layout_constraintEnd_toStartOf="@+id/LogEntryListSignedField"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/LogEntryListItemAircraftField"
style="@style/DataA"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start"
app:layout_constraintStart_toStartOf="@+id/DataB"
app:layout_constraintTop_toBottomOf="@+id/DataB" />
<TextView
android:id="@+id/DataA"
style="@style/LogEntryListItemAircraftNameStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="end"
app:layout_constraintEnd_toEndOf="@+id/LogEntryListItemDateTimeField"
app:layout_constraintTop_toBottomOf="@+id/LogEntryListItemDateTimeField" />
<android.support.constraint.Barrier
android:id="@+id/barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="bottom"
app:constraint_referenced_ids="LogEntryListItemAircraftField, DataA" />
<TextView
android:id="@+id/LogEntryListItemNotesField"
style="@style/LogEntryListItemNotesStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:hint="(Notes)"
android:maxLines="2"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="@+id/DataB"
app:layout_constraintEnd_toEndOf="@+id/LogEntryListItemDateTimeField"
app:layout_constraintTop_toBottomOf="@+id/barrier" />
<ImageView
android:id="@+id/LogEntryListSignedField"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:scaleType="center"
android:src="@drawable/ic_menu_edit"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
【问题讨论】:
-
不,这不是 maxLines,因为它应该看起来像第一个屏幕截图并使用整个区域
-
但是第二行的第一个单词很短(“xc xfxfx...”)。为什么第一行没有“xc”?
-
具有 xc xfxfx 文本的视图的宽度是多少?
-
它在 xml 文件中 - LogEntryListItemNotesField。基本上是整个宽度。
-
好吧,没关系,这是我的错误 - 它有换行符......
标签: android layout textview right-to-left