1

截图贴在下面。在每一行中,最后 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.

在此处输入图像描述

4

1 回答 1

4

在您的文本视图上将 android:layout_gravity 设置为 center_vertical。

基本上,由于您的 layout_height 设置为包装内容,因此您的文本视图如下所示:

-------
content
-------

文本视图与其父视图对齐,如下所示:

-------
-------
content
-------




-------

您的目标是让视图在父级中垂直居中。属性“layout_gravity”告诉视图如何在其父视图中调整自身。因此,将 layout_gravity 设置为 center_vertical 将告诉视图在其父视图中居中,如下所示:

-------


-------
content
-------


-------

另一种可以实现的方法是使用“重力”属性。“gravity”属性告诉父级如何布局其内容(与“layout_gravity”相反,后者定义告诉视图如何位于其父级中)。因此,另一种可能的解决方案是告诉列表视图将其所有内容垂直居中对齐。这是通过在 ViewGroup(在您的情况下为 LinearLayout)上指定 android:gravity="center_vertical" 来完成的。

于 2013-02-08T17:29:21.640 回答