简体   繁体   中英

LinearLayout with blank space at the bottom

I am using LinearLayout horizontal to load view from the adapter. Though I am using wrap_content and views within the layout are aligned to top. And there is a blank space below the linearLayout. Is this is a bug or what am I doing wrong. Please do check the attached 截图

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:clickable="true"
        android:background="@drawable/recycler_selector">

        <de.hdodenhof.circleimageview.CircleImageView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="50dp"
            android:id="@+id/group_chat_photo" />

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_weight="5"
            android:paddingStart="5dp"
            android:paddingEnd="5dp"
            android:layout_height="wrap_content">

            <TextView
                android:layout_width="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_alignParentStart="true"
                android:layout_height="wrap_content"
                style="@style/ListTitleTextStyle"
                android:id="@+id/group_name" />

            <TextView
                android:layout_width="wrap_content"
                android:padding="5dp"
                android:layout_toStartOf="@id/group_name"
                android:layout_height="wrap_content"
                android:id="@+id/num_of_group_users"
                style="@style/PresenceTextStyle"
                android:layout_toEndOf="@id/group_name"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="@style/SubTitleTextStyle"
                android:layout_below="@id/group_name"
                android:id="@+id/group_members_presence"/>

        </RelativeLayout>

        <ImageView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_dots_vertical_grey600_24dp"
            android:contentDescription="@string/group_chat_options"
            android:id="@+id/group_chat_options"/>


    </LinearLayout>

This element is the main problem,

<TextView
  android:id="@+id/num_of_group_users"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_toEndOf="@id/group_name"
  android:layout_toStartOf="@id/group_name"
  tools:text="10 users"
  android:padding="5dp" />

Since, you are already using relative layout, there is no need to wrap this around linear layout. You can use single RelativeLayout as container. For example, following is just idea, you can change padding and margin as per your need.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:background="@android:color/holo_orange_dark"
  android:orientation="horizontal">

  <ImageView
    android:id="@+id/group_chat_photo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:src="@mipmap/ic_launcher" />

  <TextView
    android:id="@+id/group_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/group_chat_photo"
    tools:text="Some title" />

  <TextView
    android:id="@+id/num_of_group_users"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/group_name"
    android:layout_toRightOf="@+id/group_members_presence"
    tools:text="10 users" />

  <TextView
    android:id="@+id/group_members_presence"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/group_name"
    android:layout_toRightOf="@+id/group_chat_photo"
    tools:text="Presence" />

  <ImageView
    android:id="@+id/group_chat_options"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:src="@mipmap/ic_launcher" />

</RelativeLayout>

尝试将整个线性布局放入另一个布局(相对或线性)中,并将其宽度设置为“ match_parent”,将高度设置为“ wrap_content”

我认为问题在于您在其中一个TextView中使用layout_toStartOf和layout_toEndOf(android:id =“ @ + id / num_of_group_users”)删除其中之一。

Don't use LinearLayout attribute android:layout_weight to RelativeLayout . I have redesigned your xml with RelativeLayout . See the attached image for output.

Here is the working code. Try this:

<?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="82dp"
    android:clickable="true"
    android:background="#455A64"
    android:padding="16dp">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/group_chat_photo"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:src="@mipmap/ic_launcher"/>

    <ImageView
        android:id="@+id/group_chat_options"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:src="@drawable/ic_dots_vertical_grey600_24dp"
        android:contentDescription="group_chat_options" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/group_chat_photo"
        android:layout_toLeftOf="@id/group_chat_options"
        android:layout_centerVertical="true"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp">

        <TextView
            android:id="@+id/group_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Americal AllStars"
            android:textColor="#FFFFFF"
            android:textSize="18dp"/>

        <TextView
            android:id="@+id/group_members_presence"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/group_name"
            android:text="Alucard, Client"
            android:textColor="#0788C9"
            android:textSize="16dp" />

        <TextView
            android:id="@+id/num_of_group_users"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/group_members_presence"
            android:layout_alignBottom="@id/group_members_presence"
            android:paddingLeft="5dp"
            android:text="and 10 others"
            android:textColor="#0788C9"
            android:textSize="16dp" />

    </RelativeLayout>
</RelativeLayout>

OUTPUT:

在此处输入图片说明

Hope this will help you~

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM