无法在RelativeLayout中对齐ImageView

时间:2012-02-25 22:45:14

标签: android imageview relativelayout

我有一个包含两个textView和一个ImageView的布局。

第一个文本与左侧对齐。第二个也与左侧对齐,位于第一个文本下方。图像与右边对齐!并且与第一个文本的顶部和第二个文本的底部对齐。

我尝试使用RelativeLayout作为作业,但Image拒绝向右对齐。

这是我的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>

请告知。

谢谢,Ika。

2 个答案:

答案 0 :(得分:4)

如果您想使用LinearLayout,请使用width="match_parent"并通过设置gravity="right"进行对齐。因此,您在具有父级宽度的视图中移动 text

至于你在RelativeLayout中放置ImageView,你在那里有一个矛盾:android:layout_alignParentRight="true"android:layout_toRightOf="@id/Names" - 两个不同的水平位置。

此外,您不能同时使用底部和顶部放置。而你在Image中使用它们。再一次矛盾。

如何将Image放置在LinearLayout的右侧,取得根布局的所有宽度? 哪里可以放置?将名称的宽度更改为wrap_content

答案 1 :(得分:0)

我不确定你在寻找什么......而且我不确定嵌入大量的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>