1

次のレイアウトファイルがあります。

<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

    <TextView
            android:text="TOP"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    <RelativeLayout
            android:background="@color/azul_pressed"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

        <TextView
                android:id="@+id/tv1"
                android:paddingLeft="100dp"
                android:text="|RIGHT--"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

        <TextView
                android:id="@+id/tv2"
                android:layout_toLeftOf="@id/tv1"
                android:text="--LEFT|"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

    </RelativeLayout>

    <TextView
            android:text="BOTTOM"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

</LinearLayout>

次の出力が生成されます。

ここに画像の説明を入力

この行:

android:layout_toLeftOf="@id/tv1"

tv2が画面から消え、余分な青いスペースがすべて作成されます。

なんで?

4

2 に答える 2

0

相対的なレイアウトでは、コンテンツを親ウィジェットまたは別のウィジェットに揃える必要があります。

これがあなたが探しているものだと思います:

<TextView
        android:id="@+id/tv1"
        android:paddingLeft="100dp"
        android:text="|RIGHT--"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/tv2"/>

<TextView
        android:id="@+id/tv2"
        android:layout_alignParentLeft="true"
        android:text="--LEFT|"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

tv1 を親の左側に配置し、tv2 を tv1 の右側に配置する方法を確認してください。

また、その逆も可能です。

于 2013-08-14T19:45:58.147 に答える
0

パディングとマージンを混同していませんか? パディングは TextView 内でテキストを移動しますが、実際には境界の一部ではありません。横から押したい場合は代わりにマージンを使用するか、親 ViewGroup にパディングします (同じこと)。

<TextView
    android:id="@+id/tv2"
    android:layout_alignParentLeft="true"
    android:text="--LEFT|"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<TextView
    android:id="@+id/tv1"
    android:text="|RIGHT--"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/tv2"/>

これにより、ビューが互いに隣接して配置されます。

左側に 100 ピクセルずつオフセットする場合は、次を追加します。

android:margin_left="100dp"tv2へ。tv1 は tv2 の右側に付いているため、両方を 100 dp 押し上げます。あなたの意図はLinearLayoutよくわかりませんが、両方のテキストビューが同じ量のスペースを占有し、均等に広がるため、子供に重力を設定する方が良いと思います。

編集:これはCarlos Paulinoの答えに似ていることに注意してください。テキストのパディングオフセットとレイアウト境界を混同していたと思います。

于 2013-08-14T20:48:14.743 に答える