【问题标题】:Align parent bottom not working well on android device在 android 设备上对齐父底部无法正常工作
【发布时间】:2014-04-15 07:11:25
【问题描述】:

我有这个列表视图行 lyout:

代码如下:

<?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>

但这是我在设备上看到的:

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

这有什么问题?

选项 1:android:id="@+id/members" 中删除 android:layout_alignBottom="@+id/relativeLayout3" 会在设备上返回:

谢谢

【问题讨论】:

  • 除了使用android:layout_alignBottom 属性,尝试使用android:layout_below=""
  • 查看我的答案。 @Vlad loffe

标签: android xml user-interface android-listview


【解决方案1】:

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

我添加了 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>

【讨论】:

  • 这一行有错误:android:layout_below="@id/UserEventListViewRow_event_type_icon_TextView"(42)
  • 试试@+id/UserEventListViewRow_event_type_icon_TextView
  • 现在没有错误,但是文本没有对齐到@+id/members相对布局的底部。它位于上部文本视图的下方。
  • @VladIoffe 你在说文字1 吗?
  • @GrlsHu 顶部的文本视图UserEventListViewRow_title_TextView
【解决方案2】:

问题出在这里:

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

android:layout_alignBottom="@+id/relativeLayout3" 这将使该布局的底部边缘与给定锚视图 ID 的底部边缘相匹配,即 relativeLayout3,并且该布局在其父级中包装内容并顶部对齐。

删除这行android:layout_alignBottom="@+id/relativeLayout3

【讨论】:

  • 这会在图形视图中拉出@+id/members 的孔。在设备中,灰色(@+id/members 着色为#CCCCCC)不会被拉到左侧布局(包含图像视图)的底部
  • 查看更新后的问题了解详情(在选项 1 下)
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    在RelativeLayout里面创建一个LinearLayout,把你的view放到LinearLayout里面,然后在LinearLayout里面声明android:layout_alignParentBottom="true"。像这样的:

    <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 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-04
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 2017-10-13
      • 2017-11-04
      • 2021-03-01
      • 1970-01-01
      相关资源
      最近更新 更多