【发布时间】:2015-05-17 18:34:58
【问题描述】:
我正在尝试将多个(可变)文本视图对齐在一行中。它应该是这样的:
- Textview1 | Textview2 | TextView3
由于文本视图的长度不同,我无法正确对齐它们(我唯一知道的是 Textview1 将是最短的)。
这是我的代码(它被放置在一个线性布局中):
<RelativeLayout
android:id="@+id/persondetails_names_horizontal_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:gravity="right" >
<TextView
android:id="@+id/persondetails_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:paddingTop="3dp"
android:text=" Title "
android:layout_alignParentRight="true" />
<TextView
android:id="@+id/persondetails_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" Name "
android:textSize="@dimen/font_big"
android:textStyle="bold"
android:layout_toEndOf="@id/persondetails_title"
android:layout_toRightOf="@id/persondetails_title" />
<TextView
android:id="@+id/persondetails_surname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/persondetails_name"
android:layout_toRightOf="@id/persondetails_name"
android:text=" Surname " />
</RelativeLayout>
现在,只要这 3 个 Textview 在屏幕上填满一行,一切正常,但一旦其中一个变大,我就会遇到一些问题。例如,当我将 surname 字段放得很长时,它会将其他 2 个视图推出屏幕(它们不可见)并占用所有空间(但只有一行!)。
我想要的是这些视图与右侧对齐,每个视图都在前一个视图的右侧,并且当需要换行到新行时(不知道它是哪个文本视图)并在新行以下文本视图应与其右侧对齐。
那么我需要在我的代码中进行哪些更改,以便这些 Textview 彼此相邻对齐,并在其中一个变大时正确移动?
谢谢
这就是我实施 Elltz 建议的方式:
<LinearLayout
android:id="@+id/persondetails_namen_horizontal_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:gravity="right"
android:orientation="horizontal"
android:weightSum="2" >
<TextView
android:id="@+id/persondetails_wert_titel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right" />
<TextView
android:id="@+id/persondetails_wert_vorname"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_below="@id/persondetails_text_vorname"
android:gravity="right"
android:layout_gravity="right"
android:text=" "
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:overScrollMode="always"
android:scrollHorizontally="true"
android:singleLine="true"/>
<TextView
android:id="@+id/persondetails_wert_nachname"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_below="@id/persondetails_text_vorname"
android:layout_gravity="right"
android:text=" "
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:overScrollMode="always"
android:scrollHorizontally="true"
android:singleLine="true"/>
</LinearLayout>
但仍然无法正常工作。实际上我删除了“singleLine = true”,因为如果3个文本视图之一变得太长,我需要它打破(打破没有问题)。
关于中断,我希望每个 textview 占用尽可能多的空间,唯一的事情是所有其他视图都应该正确移动。
属性“单行”不可能是正确的,因为这些视图中的一个可能对于一行来说太长了,但我已经用单行测试了它,而没有:
a) 带有“singleline=true”
b) 没有“singleline=true”
在这两种情况下,我都得到了错误的输出,但情况 2 更接近我想要的。但是,如果您查看它,您会看到 textview2 正在被推送并且它超出了它的边界,但不是在整个长度上。 Textview 3 占用的空间最多。但我想要的是每个视图都被完全拉伸,如果需要的话可以换行(textview1 是这个“Mag”)
这就是我想要的样子:
【问题讨论】:
-
抱歉我没看到。你在哪里发布你的答案?
标签: android android-layout textview alignment android-relativelayout