11

次の要件があります(大幅に簡略化されています):

ここに画像の説明を入力

テキスト 2は、画面の中央から開始する必要があります。

LinearLayoutを使用してのみこれを達成できました。

<more_code></more_code><LinearLayout
                                    android:baselineAligned="false"
                                    android:weightSum="2"
                                    android:layout_width="match_parent"
                                    android:layout_height="wrap_content">

                                <LinearLayout
                                        android:layout_weight="1"
                                        android:orientation="horizontal"
                                        android:layout_width="0dp"
                                        android:layout_height="wrap_content">
                                    <TextView
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:text="test one"/>
                                    <TextView
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:text="test two"/>
                                </LinearLayout>

                                <LinearLayout
                                        android:layout_weight="1"
                                        android:orientation="horizontal"
                                        android:layout_width="0dp"
                                        android:layout_height="wrap_content">
                                    <TextView
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:text="test three"/>

                                    <TextView
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:text="test four"/>
                                </LinearLayout>
                            </LinearLayout><more_code></more_code>

ネストされたビューが既に多すぎるため (したがって、myfile.xml を取得すると 10 レベル以上になり、パフォーマンスの警告に悪い)、1 つのRelativeLayoutで同じ結果が得られるかどうかを知りたいです。ドキュメントを確認しましたが、それを可能にするプロパティが見つかりませんでした。

4

5 に答える 5

37

オーバーヘッドとして 0dp x 0dp の 1 つの空のビューを受け入れる場合、これは非常に簡単です。私の意見では、これは入れ子になったビューが多すぎるよりも優れていますが、他のビューの参照として使用できます。

Space(0x0 px) を使用します。これをSpace水平方向に中央揃えにすると、次のように参照として使用できます。

<RelativeLayout>

    <!-- Empty layout (0x0 dp) centered horizontally -->
    <Space android:id="@+id/dummy" 
        android:layout_width="0dp" 
        android:layout_height="0dp"
        android:layout_centerHorizontal="true" 
        android:visibility="invisible"/>

    <!-- Align to parent left -->
    <TextView
        android:id="@+id/test_one"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:text="test one"/>

    <!-- to right of the previous one, and to left of the dummy -->
    <TextView
        android:id="@+id/test_two"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/test_one"
        android:layout_toLeftOf="@+id/dummy"
        android:text="test two"/>

    <!-- Align to right of the dummy -->
    <TextView
        android:id="@+id/test_three"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/dummy"
        android:text="test three"/>

    <!-- Align to right of the previous one, and parent right -->
    <TextView
        android:id="@+id/test_four"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/test_three"
        android:layout_alignParentRight="true"
        android:text="test four"/>

</RelativeLayout>
于 2013-05-08T16:50:16.267 に答える
0

IDViewを持つandroid:layout_centerHorizontal="true"andを持つダミーを使用する必要がある場合があります。次に、属性をandroid:layout_width="0dp"追加して配置します。これを行う簡単な方法があるかもしれませんが、現時点ではテストできません。TextViewandroid:layout_toRightOf="@id/id_of_dummy_view"

于 2013-05-08T16:52:45.730 に答える
0

正確な問題を理解できませんでした。必要なのは中心からのテキスト2であるため、最初に相対レイアウトを使用して、方向のみを定義してコントロールを次々と配置する線形レイアウトではなく、相対レイアウトで配置する方が簡単です。その中で、プロパティ center_in_parent を true に使用して、text1 を左に揃えることができます。これで問題が解決することを願っています。

于 2013-05-08T16:32:46.510 に答える
0

alignParentLeft="true" を使用して、親の左に揃えることができます

于 2013-05-08T16:31:26.850 に答える
0

以下のコードを試してください(未テスト):

   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="5dip" >

        <!--  ListRow Left side text-->

        <TextView
            android:id = "@+id/lefttextview" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="text1"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"/>
        <!-- center -->
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/lefttextview"
            android:text="text2"/>


    </RelativeLayout>
于 2013-05-08T16:31:33.680 に答える