屏幕截图发布在下方。在每一行中,最后3列不会垂直居中。在显示屏幕之前,每行的高度都是未知的。我不确定,但我猜我需要在显示所有内容后动态找到行的高度,然后将所有内容置于中心位置。这是正确的路线吗?
以下是此类的XML代码片段。
<ScrollView
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="65"
android:fillViewport="true" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/q1Image"
android:layout_width="10dp"
android:layout_height="10dp" />
<TextView
android:id="@+id/q1Question"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="48"
android:paddingLeft="5dp"
android:paddingBottom="6dp" />
<TextView
android:id="@+id/q1Answer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="27"
android:paddingBottom="6dp" />
<TextView
android:id="@+id/q1Verse"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="25"
android:paddingBottom="6dp" />
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#C2BEBF" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/q2Image"
android:layout_width="10dp"
android:layout_height="10dp" />
<TextView
android:id="@+id/q2Question"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="48"
android:paddingLeft="5dp"
android:paddingBottom="6dp"
android:paddingTop="6dp" />
<TextView
android:id="@+id/q2Answer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="27"
android:paddingBottom="6dp"
android:paddingTop="6dp" />
<TextView
android:id="@+id/q2Verse"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="25"
android:paddingBottom="6dp"
android:paddingTop="6dp" />
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#C2BEBF" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/q3Image"
android:layout_width="10dp"
android:layout_height="10dp" />
<TextView
android:id="@+id/q3Question"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="48"
android:paddingLeft="5dp"
android:paddingBottom="6dp"
android:paddingTop="6dp" />
<TextView
android:id="@+id/q3Answer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="27"
android:paddingBottom="6dp"
android:paddingTop="6dp" />
<TextView
android:id="@+id/q3Verse"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="10sp"
android:layout_weight="25"
android:paddingBottom="6dp"
android:paddingTop="6dp" />
</LinearLayout>
//Rows 4-10 code excluded because of repetition.
答案 0 :(得分:4)
在文本视图中将android:layout_gravity设置为center_vertical。
基本上,由于layout_height设置为包装内容,因此文本视图如下所示:
-------
content
-------
文本视图与其父级对齐如下:
-------
-------
content
-------
-------
您的目标是让视图在父级中垂直居中。属性“layout_gravity”告诉视图如何在其父级中调整自身。因此,将layout_gravity设置为center_vertical将告诉视图在其父级中居中,如下所示:
-------
-------
content
-------
-------
另一种可以实现的方法是使用“gravity”属性。 “gravity”属性告诉父母如何布局其内容(而不是“layout_gravity”,其定义告诉视图如何坐在其父级内)。因此,另一种可能的解决方案是告诉列表视图将其所有内容垂直对齐。这是通过在ViewGroup上指定android:gravity =“center_vertical”来完成的(在你的情况下是LinearLayout)。