我的布局如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start"
android:text="@string/title_day"
android:textStyle="bold"
android:textSize="20sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="start"
android:text="Tuesday"
android:textSize="16sp" />
</LinearLayout>
<TextView
android:id="@+id/tv_fail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+22"
android:textSize="16sp"
android:layout_gravity="end|center_vertical" />
</LinearLayout>
</LinearLayout>
这看起来像这样:
我希望将ID为tv_fail
的最后一个TextView固定在屏幕的右端。我想那
android:layout_gravity="end|center_vertical"
应该处理它,但是此指令将TextView垂直居中,但不会将其移动到结尾。如何解决?
答案 0 :(得分:1)
如果您只想将text
设置为最后一个TextView
的结尾,则应使用:
android:gravity="end"
用于TextView
重力:
android:layout_gravity="center"
android:gravity
和android:layout_gravity
之间的区别是,第一个在给定重力的情况下将内容布置在任何视图内,而第二个则根据给定的重力来布置视图。
更新的代码:
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="start" android:text="title_day" android:textSize="20sp" android:textStyle="bold" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="start" android:text="Tuesday" android:textSize="16sp" /> </LinearLayout> <TextView android:id="@+id/tv_fail" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="+22" android:textSize="16sp" /> </LinearLayout>
答案 1 :(得分:1)
我想是
android:layout_gravity="end|center_vertical"
应该处理它,但是此说明使TextView垂直居中,但不会将其移动到结尾。
这是由于LinearLayout
的工作方式;您对layout_gravity
的理解通常是正确的。
LinearLayout将其子级放置在一行中,并且所有子级都将打包到LinearLayout的“开始”位置。换句话说,水平LinearLayout将忽略子级layout_gravity
属性的水平分量。
有几种方法可以解决此问题。我认为最适合您的情况的方法是使TextView拉伸以填充LinearLayout中的所有剩余空间(使用layout_weight
),然后将TextView的文本放在其内容区域的末尾(使用gravity
)。
<TextView
android:id="@+id/tv_fail"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="+22"
android:textSize="16sp"
android:layout_gravity="center_vertical"
android:gravity="end"/>