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
-------


-------

これを実現するもう1つの方法は、「重力」属性を使用することです。「gravity」属性は、コンテンツのレイアウト方法を親に指示します(定義する「layout_gravity」は、ビューにその親内に座る方法を指示します)。したがって、別の可能な解決策は、すべてのコンテンツを垂直方向の中央に配置するようにリストビューに指示することです。これは、ViewGroup(この場合はLinearLayout)でandroid:gravity="center_vertical"を指定することで実行されます。

于 2013-02-08T17:29:21.640 に答える