在Android设备上对齐父级底部不能正常工作

时间:2014-04-15 07:11:25

标签: android xml user-interface android-listview

我有这个列表视图行lyout:

enter image description here

这是它的代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" >

        <RelativeLayout
            android:id="@+id/members"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignBottom="@+id/relativeLayout3"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_margin="5dp"
            android:layout_toRightOf="@+id/relativeLayout3"
            android:background="#CCCCCC" >

            <TextView
                android:id="@+id/UserEventListViewRow_title_TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"
                android:text="Medium Text"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/UserEventListViewRow_update_date_TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:text="last update"
                android:textAppearance="?android:attr/textAppearanceSmall" />

            <TextView
                android:id="@+id/UserEventListViewRow_event_type_icon_TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:text="@string/calendar_icon"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textSize="30sp" />

            <TextView
                android:id="@+id/UserEventListViewRow_goin_icon_TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:text="@string/users_icon"
                android:textAppearance="?android:attr/textAppearanceSmall" />

            <TextView
                android:id="@+id/UserEventListViewRow_going_number_TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_toRightOf="@+id/UserEventListViewRow_goin_icon_TextView"
                android:text="12"
                android:textAppearance="?android:attr/textAppearanceSmall" />

        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/relativeLayout3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true" >

            <ImageView
                android:id="@+id/UserEventListViewRow_image_ImageView"
                android:layout_width="75dp"
                android:layout_height="75dp"
                android:padding="5dp"
                android:src="@drawable/calendar" />

            <ProgressBar
                android:id="@+id/UserEventListViewRow_image_loader_ProgressBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true" />
        </RelativeLayout>

    </RelativeLayout>

</RelativeLayout>

但这是我在设备上看到的方式: enter image description here

在较旧的设备上,它的工作方式与图形布局相同。

它出了什么问题?

选项1:android:layout_alignBottom="@+id/relativeLayout3"删除android:id="@+id/members"会在设备上返回此信息: enter image description here

由于

4 个答案:

答案 0 :(得分:3)

试试以下代码。我根据需要进行了适当的布局,做了一些像文本和图像的更改。您可以根据布局进行更改。

我添加了layout_below属性并设置了一些视图的重力,以根据需要在底部设置布局。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RelativeLayout
        android:id="@+id/relativeLayout1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" >

        <RelativeLayout
            android:id="@+id/members"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignBottom="@+id/relativeLayout3"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_margin="5dp"
            android:layout_toRightOf="@+id/relativeLayout3"
            android:background="#CCCCCC" >

            <TextView
                android:id="@+id/UserEventListViewRow_title_TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_alignParentLeft="true"
                android:text="Medium Text"
                android:textAppearance="?android:attr/textAppearanceLarge" />

            <TextView
                android:id="@+id/UserEventListViewRow_update_date_TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:text="last update"
                android:gravity="bottom"
                 android:layout_below="@id/UserEventListViewRow_event_type_icon_TextView"
                android:textAppearance="?android:attr/textAppearanceSmall" />

            <TextView
                android:id="@+id/UserEventListViewRow_event_type_icon_TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_alignParentTop="true"
                android:gravity="right"
                android:layout_toRightOf="@id/UserEventListViewRow_title_TextView"
                android:text="calen"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:textSize="30sp" />

            <TextView
                android:id="@+id/UserEventListViewRow_goin_icon_TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:gravity="bottom"
                android:layout_alignParentLeft="true"
                android:text="users_icon"
                android:layout_below="@id/UserEventListViewRow_title_TextView"
                android:textAppearance="?android:attr/textAppearanceSmall" />

            <TextView
                android:id="@+id/UserEventListViewRow_going_number_TextView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_toRightOf="@+id/UserEventListViewRow_goin_icon_TextView"
                android:text="12"
                android:textAppearance="?android:attr/textAppearanceSmall" />

        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/relativeLayout3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true" >

            <ImageView
                android:id="@+id/UserEventListViewRow_image_ImageView"
                android:layout_width="75dp"
                android:layout_height="75dp"
                android:padding="5dp"
                android:src="@android:drawable/ic_menu_my_calendar" />

            <ProgressBar
                android:id="@+id/UserEventListViewRow_image_loader_ProgressBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true" />
        </RelativeLayout>

    </RelativeLayout>

</RelativeLayout>

答案 1 :(得分:2)

问题在于:

   <RelativeLayout
                android:id="@+id/members"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_alignBottom="@+id/relativeLayout3"
    ....

机器人:layout_alignBottom =&#34; @ + ID / relativeLayout3&#34;这将使此布局的下边缘与给定的锚点视图ID的下边缘匹配,该下边缘是relativeLayout3,并且此布局包装内容并在其父级中顶部对齐。

只需删除此行android:layout_alignBottom="@+id/relativeLayout3

即可

答案 2 :(得分:0)

尝试使用android:layout_below和android:layout_above。这个属性在RelativeLayout中很舒服

答案 3 :(得分:0)

在RelativeLayout中创建一个LinearLayout并将你的视图放在LinearLayout中,并声明android:layout_alignParentBottom =&#34; true&#34;在LinearLayout内。像这样:

<LinearLayout
        android:id="@+id/palmview"
        android:layout_width="fill_parent"
        android:layout_height="400dp" 
        android:orientation="vertical"
        android:layout_alignParentBottom="true">
  <ImageView 
    android:id = "@+id/palm"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/palm"/>

并且LinearLayout将在RelativeLayout中。