添加layout_weight后,ListView未对齐

时间:2017-08-06 06:02:09

标签: android listview

这是我的代码的输出。我无法在每个ListView项目中对齐所有视图。我已经为每个视图使用了layout_weight,并将layout_width设置为0sp。真的很好奇为什么它不能工作。希望得到一些解决方案。谢谢!

enter image description here

list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="95sp">

    <ImageView
        android:id="@+id/image"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:src="@drawable/download"
        android:layout_weight="1"
        android:layout_marginLeft="12sp"
        android:scaleType="fitCenter"
        android:adjustViewBounds="false"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="3"
        android:orientation="vertical"
        android:layout_marginLeft="12sp">

        <TextView
            android:id="@+id/name"
            android:text="name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textStyle="bold"
            android:textSize="20sp"/>

        <TextView
            android:id="@+id/new_age"
            android:text="New Age"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="16sp"/>

        <TextView
            android:id="@+id/email"
            android:text="Email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="16sp"/>

        <TextView
            android:id="@+id/phone"
            android:text="Phone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="16sp"/>

    </LinearLayout>

    <TextView
        android:id="@+id/countdown"
        android:text="Tomorrow"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="center"
        android:layout_marginTop="16sp"
        android:textSize="16sp"/>

...

</LinearLayout>

2 个答案:

答案 0 :(得分:0)

  

您需要在父布局中添加layout_weightSum -

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="95dp"
    android:weightSum="4"
    android:orientation="horizontal">

<ImageView
    android:id="@+id/image"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_marginLeft="12sp"
    android:layout_weight="1"
    android:adjustViewBounds="false"
    android:scaleType="fitXY" />

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_marginLeft="12sp"
    android:layout_weight="2"
    android:orientation="vertical">

    <TextView
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:text="name"
        android:textSize="20sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/new_age"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:text="New Age"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:text="Email"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/phone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:text="Phone"
        android:textSize="16sp" />

</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="wrap_content">

    <TextView

        android:id="@+id/countdown"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16sp"
        android:gravity="center"
        tools:text="Tomorrow"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/daysago"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16sp"
        android:gravity="center"
        tools:text="4 days ago"
        android:textSize="16sp" />
</LinearLayout>

然后,您需要在每个子布局上使用android:layout_weight="1"平均分配权重。

如果您需要更多帮助,请告诉我。

答案 1 :(得分:0)

使用此:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="95dp"
android:weightSum="4"
android:orientation="horizontal">

<ImageView
    android:id="@+id/image"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_marginLeft="12sp"
    android:layout_weight="1"
    android:adjustViewBounds="false"
    android:scaleType="fitCenter"
    android:src="@mipmap/ic_launcher" />

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_marginLeft="12sp"
    android:layout_weight="2"
    android:orientation="vertical">

    <TextView
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="name"
        android:textSize="20sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/new_age"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="New Age"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Email"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/phone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Phone"
        android:textSize="16sp" />

</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:layout_height="wrap_content">

<TextView

    android:id="@+id/countdown"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="16sp"
    android:gravity="center"
    android:text="Tomorrow"
    android:textSize="16sp" />

    <TextView
        android:id="@+id/daysago"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16sp"
        android:gravity="center"
        android:text="4days ago"
        android:textSize="16sp" />
</LinearLayout>


</LinearLayout>