布局weightSum不工作Android

时间:2016-02-06 05:07:09

标签: android android-layout android-recyclerview

我的布局包含一个父版LinearLayout,其weightSum为100,两个子布局的版本为weights 40和60.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal"
    android:id="@+id/cv_container"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:weightSum="100"
    android:background="@android:color/white">
    <RelativeLayout
        android:padding="10dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/linearLayout1"
        android:layout_weight="40">
        <Droid.SquareImageView
            android:src="@android:drawable/ic_menu_gallery"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/imgPlaceholderImage"
            android:layout_centerInParent="true"
            android:scaleType="fitXY" />
        <Droid.CustomTextView
            android:text="Category"
            app:customFont="Fonts/Roboto-Bold.ttf"
            android:textSize="12sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:color="@android:color/white"
            android:id="@+id/txtCategory"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:ellipsize="end" />
    </RelativeLayout>
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:id="@+id/linearLayout2"
        android:layout_weight="60"
        android:padding="10dp">
        <Droid.CustomTextView
            android:text=""
            app:customFont="Fonts/Roboto-Bold.ttf"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textSize="16sp"
            android:color="@android:color/black"
            android:id="@+id/txtTitle" />
        <Droid.CustomTextView
            android:text=""
            android:textSize="14sp"
            app:customFont="Fonts/Roboto-Regular.ttf"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:color="#d5d5d5"
            android:id="@+id/txtDate" />
        <Droid.CustomTextView
            android:text=""
            app:customFont="Fonts/Roboto-Regular.ttf"
            android:textSize="15sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:color="@android:color/black"
            android:id="@+id/txtDetail"
            android:maxEms="4"
            android:ellipsize="end" />
    </LinearLayout>
</LinearLayout>

有了这个我得到的布局如下: - enter image description here

我的第二排看起来不错,但第一排看起来很奇怪。我使用RecyclerView
如何让我的第一行看起来像第二行?

3 个答案:

答案 0 :(得分:1)

尝试将0dp宽度设为RelativeLayout,只要您将weight属性用于任何layoutviews,就必须设置width如果父级布局为height,则设置为0dp layout或父级布局为orientation布局为horizontal,然后设置width 0dp

您不需要将vertical 100给予任何height0dp,默认情况下会考虑weightSum 100。

答案 1 :(得分:0)

您必须为width0dp的值设置为RelativeLayout,然后权重才会生效。 在您的情况下,因为您使用了水平LinearLayout,您必须将width改为RelativeLayout0dp

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:id="@+id/cv_container"
android:layout_width="match_parent"
android:layout_height="150dp"
android:weightSum="100"
android:background="@android:color/white">
<RelativeLayout
    android:padding="10dp"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:id="@+id/linearLayout1"
    android:layout_weight="40">
    <Droid.SquareImageView
        android:src="@android:drawable/ic_menu_gallery"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/imgPlaceholderImage"
        android:layout_centerInParent="true"
        android:scaleType="fitXY" />
    <Droid.CustomTextView
        android:text="Category"
        app:customFont="Fonts/Roboto-Bold.ttf"
        android:textSize="12sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:color="@android:color/white"
        android:id="@+id/txtCategory"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:ellipsize="end" />
</RelativeLayout>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:id="@+id/linearLayout2"
    android:layout_weight="60"
    android:padding="10dp">
    <Droid.CustomTextView
        android:text=""
        app:customFont="Fonts/Roboto-Bold.ttf"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:color="@android:color/black"
        android:id="@+id/txtTitle" />
    <Droid.CustomTextView
        android:text=""
        android:textSize="14sp"
        app:customFont="Fonts/Roboto-Regular.ttf"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:color="#d5d5d5"
        android:id="@+id/txtDate" />
    <Droid.CustomTextView
        android:text=""
        app:customFont="Fonts/Roboto-Regular.ttf"
        android:textSize="15sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:color="@android:color/black"
        android:id="@+id/txtDetail"
        android:maxEms="4"
        android:ellipsize="end" />
</LinearLayout>

要详细了解Layout_weight的工作原理,请查看this answer

答案 2 :(得分:0)

检查此解决方案,将起作用

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/cv_container"
    android:layout_width="match_parent"
    android:layout_height="150dp"
    android:background="@android:color/white"
    android:orientation="horizontal"
    android:weightSum="100">

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="40"
        android:orientation="vertical"
        android:padding="5dp">

        <Droid.SquareImageView
            android:id="@+id/imgPlaceholderImage"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:src="@android:drawable/ic_menu_gallery" />

        <Droid.CustomTextView
            android:id="@+id/txtCategory"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:color="@android:color/white"
            android:ellipsize="end"
            android:text="Category"
            android:textSize="12sp"
            app:customFont="Fonts/Roboto-Bold.ttf" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="60"
        android:orientation="vertical"
        android:padding="5dp">

        <Droid.CustomTextView
            android:id="@+id/txtTitle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:color="@android:color/black"
            android:text=""
            android:textSize="16sp"
            app:customFont="Fonts/Roboto-Bold.ttf" />

        <Droid.CustomTextView
            android:id="@+id/txtDate"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:color="#d5d5d5"
            android:text=""
            android:textSize="14sp"
            app:customFont="Fonts/Roboto-Regular.ttf" />

        <Droid.CustomTextView
            android:id="@+id/txtDetail"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:color="@android:color/black"
            android:ellipsize="end"
            android:maxEms="4"
            android:text=""
            android:textSize="15sp"
            app:customFont="Fonts/Roboto-Regular.ttf" />
    </LinearLayout>
</LinearLayout>