Не удается выровнять ImageView в RelativeLayout - PullRequest
2 голосов
/ 26 февраля 2012

У меня есть макет, содержащий два textView и один ImageView.

первый текст выровнен по левому краю.Второй также выровнен по левому краю и находится ниже первого текста.изображение выровнено по правому краю!и выравнивается по верху первого текста и по низу второго текста.

Я пытался использовать RelativeLayout для задания, но изображение отказывается выравниваться вправо.

Здесьмой xml

<RelativeLayout
            android:id="@+id/NameAndPhoto"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
            <LinearLayout
                android:id="@+id/Names"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical" >

                <TextView
                    android:id="@+id/FirstName"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="@style/contact_page_name_text_style" >
                </TextView>

                <TextView
                    android:id="@+id/LastName"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="@style/contact_page_name_text_style" >
                </TextView>
            </LinearLayout>

            <ImageView
                android:id="@+id/PersonPhoto"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@id/Names"
                android:layout_alignParentRight="true"
                android:layout_alignTop="@id/Names"
                android:layout_toRightOf="@id/Names"
                android:contentDescription="@string/contact_page_photo_content_description"
                android:padding="3sp"
                android:scaleType="fitCenter" >
            </ImageView>
        </RelativeLayout>

Пожалуйста, сообщите.

Спасибо, Ика.

Ответы [ 2 ]

4 голосов
/ 26 февраля 2012

Если вы хотите использовать LinearLayout, используйте width="match_parent" и выровняйте, установив gravity="right".Таким образом, вы перемещаете текст в представлении, имеющем ширину родительского элемента.

Что касается размещения ImageView в RelativeLayout, у вас есть противоречие: android:layout_alignParentRight="true" и android:layout_toRightOf="@id/Names" - дваразличные горизонтальные размещения.

Также нельзя использовать одновременно нижнее и верхнее размещение.И вы используете их в изображении.Опять противоречие.

А как вы можете поместить изображение справа от LinearLayout, которое занимает всю ширину корневого макета? Где это может быть размещено?Изменить ширину Имен на wrap_content

0 голосов
/ 26 февраля 2012

Я не совсем уверен, что вы ищете ... И я не уверен, если это хорошая практика, чтобы вкладывать тонну LienarLayouts ... Но вот что-то, что может помочь?

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/Names"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:orientation="vertical" android:layout_weight="1">

        <TextView
            android:id="@+id/FirstName"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="first name" />

        <TextView
            android:id="@+id/LastName"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="last name" />
    </LinearLayout>

    <ImageView
        android:id="@+id/PersonPhoto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="3sp"
        android:scaleType="fitCenter"
        android:src="@drawable/ic_launcher" android:layout_weight="1"/>

</LinearLayout>
...