GridLayoutManager列高度问题

时间:2016-08-20 07:10:52

标签: android xml gridview android-design-library

我想为列表的所有列实现相同的布局高度。我正在使用GridLayoutManager

preview

RecyclerView.LayoutManager layoutManager = new GridLayoutManager(mCon,2 );
recyclerView.setLayoutManager(layoutManager);

这是列xml文件

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="@dimen/padding_8dp"
    android:layout_marginLeft="@dimen/padding_4dp"
    android:layout_marginRight="@dimen/padding_4dp"
    android:clickable="true"
    android:padding="1dp"
    card_view:cardCornerRadius="@dimen/padding_2dp"
    card_view:cardUseCompatPadding="true">


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="0dp">

        <RelativeLayout
            android:id="@+id/rel_first"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="@dimen/padding_8dp">

            <ImageView
                android:id="@+id/userimg"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_marginLeft="@dimen/padding_16dp"
                android:layout_marginTop="@dimen/padding_8dp"
                android:background="@drawable/user_profile_default" />

            <RelativeLayout
                android:id="@+id/nameRL"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="@dimen/padding_4dp"
                android:layout_toRightOf="@+id/userimg"
                android:orientation="vertical">

                <com.skcsllp.mutterfly.widgets.MfTextView
                    android:id="@+id/u_name"
                    style="@style/textview.bold"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="@dimen/padding_16dp"
                    android:layout_marginStart="@dimen/padding_16dp"
                    android:layout_marginTop="@dimen/padding_8dp"
                    android:text="Akshay"
                    android:textColor="@color/new_text_grey"
                    android:textSize="@dimen/text_size_big_16"
                    />

                <ImageView
                    android:id="@+id/location1"
                    android:layout_width="7dp"
                    android:layout_height="10dp"
                    android:layout_below="@+id/u_name"
                    android:layout_marginBottom="@dimen/padding_4dp"
                    android:layout_marginLeft="@dimen/padding_16dp"
                    android:layout_marginStart="@dimen/padding_16dp"
                    android:layout_marginTop="@dimen/padding_8dp"
                    android:background="@drawable/location_pin" 
                    />

                <com.skcsllp.mutterfly.widgets.MfTextView
                    android:id="@+id/location"
                    style="@style/textview"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/u_name"
                    android:layout_marginLeft="@dimen/padding_4dp"
                    android:layout_marginTop="@dimen/padding_8dp"
                    android:layout_toEndOf="@+id/location1"
                    android:layout_toRightOf="@+id/location1"
                    android:text="2.5km"
                    android:textSize="@dimen/text_size_extra_extra_small_10" 
                    />

            </RelativeLayout>


            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:layout_below="@+id/nameRL"
                android:layout_gravity="center"
                android:layout_marginTop="@dimen/padding_8dp"
                android:background="@color/grey_bottmon_tab" 
                />

        </RelativeLayout>


        <RelativeLayout
            android:id="@+id/main_rl"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/rel_first"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="@dimen/padding_16dp"
            android:layout_marginTop="@dimen/padding_4dp"
            android:gravity="center"
            android:minHeight="80dp">

            <LinearLayout
                android:id="@+id/ln_cart"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_marginLeft="@dimen/padding_16dp"
                android:layout_marginRight="@dimen/padding_16dp"
                android:orientation="horizontal">

                <ImageView
                    android:layout_width="@dimen/padding_24dp"
                    android:layout_height="@dimen/padding_24dp"
                    android:layout_marginTop="@dimen/padding_16dp"
                    android:background="@drawable/cart_icon"
                    android:padding="@dimen/padding_2dp" 
                    />

                <com.skcsllp.mutterfly.widgets.MfTextView
                    android:id="@+id/item_name"
                    style="@style/textview"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="@dimen/padding_8dp"
                    android:layout_marginLeft="@dimen/padding_8dp"
                    android:layout_marginTop="@dimen/padding_16dp"
                    android:text="Laptop "
                    android:textColor="@color/primary"
                    android:textSize="@dimen/text_size_big_16"
                    />

            </LinearLayout>

            <LinearLayout
                android:id="@+id/ln_cal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/ln_cart"
                android:layout_centerHorizontal="true"
                android:layout_marginLeft="@dimen/padding_16dp"
                android:layout_marginRight="@dimen/padding_16dp"
                android:layout_marginTop="@dimen/padding_4dp"
                android:orientation="horizontal">

                <ImageView
                    android:layout_width="@dimen/padding_24dp"
                    android:layout_height="@dimen/padding_24dp"
                    android:background="@drawable/ic_cal"
                    />

                <com.skcsllp.mutterfly.widgets.MfTextView
                    android:id="@+id/date"
                    style="@style/textview"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginBottom="@dimen/padding_16dp"
                    android:layout_marginLeft="@dimen/padding_8dp"
                    android:layout_marginTop="@dimen/padding_4dp"
                    android:text=" 7 july - 8 july"
                    android:textColor="@color/new_text_grey"
                    android:textSize="@dimen/text_size_small_14"
                    />

            </LinearLayout>
        </RelativeLayout>


        <View
            android:id="@+id/view_second"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_below="@+id/main_rl"
            android:layout_marginTop="@dimen/padding_8dp"
            android:background="@color/grey_bottmon_tab" 
            />


        <RelativeLayout
            android:id="@+id/main_ln_sec"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/view_second"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/number_of_provider"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_centerHorizontal="true"
                android:gravity="center"
                android:text="3"
                android:visibility="gone"
                />

            <TextView
                android:id="@+id/offer_sent"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_centerHorizontal="true"
                android:gravity="center"
                android:text="offersent"
                android:visibility="gone" 
                />

            <ImageView
                android:id="@+id/accept_image"
                android:layout_width="@dimen/padding_32dp"
                android:layout_height="@dimen/padding_32dp"
                android:layout_centerHorizontal="true"
                android:layout_marginLeft="@dimen/padding_16dp"
                android:background="@drawable/check_mark"
                android:gravity="center" 
                />
        </RelativeLayout>


    </RelativeLayout>
</android.support.v7.widget.CardView>

两个列的高度相同,但当项目名称较大时,底部刻度的位置会有所不同。任何人都可以建议我如何解决这个问题。感谢

2 个答案:

答案 0 :(得分:1)

因为,您希望所有main_rl具有相同的高度,具体取决于您的使用情况,其中一种方法是将其高度固定为足够大的值并让{ {1}}处理剩下的事情:

android:gravity="center"

这适用于大多数情况。如果我真的希望过度使用这种方法,我会发现相邻卡之间的高度较大(在运行时通过<RelativeLayout android:id="@+id/main_rl" android:layout_width="match_parent" android:layout_height="100dp" android:layout_below="@+id/rel_first" android:layout_centerHorizontal="true" android:layout_marginBottom="@dimen/padding_16dp" android:layout_marginTop="@dimen/padding_4dp" android:gravity="center"> ... </RelativeLayout> ),然后将该值设置为另一个。我怀疑是否需要。

答案 1 :(得分:0)

尝试将android:layout_below="@+id/view_second"更改为android:layout_alignParentBottom="true",以便始终在父布局的底部打勾。我实际上没有理由来检查我的答案是否正确,sory为此:(

<RelativeLayout
        android:id="@+id/main_ln_sec"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/view_second"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:gravity="center"
        android:orientation="horizontal">