2016-08-20 178 views
0

我想爲列表的所有列實現相同的佈局高度。我使用GridLayoutManagerGridLayoutManager列高度問題

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> 

這兩列具有相同的高度,但底部蜱是越來越置於不同,當項目名稱爲大。任何人都可以建議我如何解決這個問題。謝謝

+0

哪一個是底部滴答?和一些截圖。 – sumandas

+0

秒列綠色的勾被向上提升相比,第一個 –

回答

1

因爲,你希望所有的main_rl都是相同的高度,這取決於你的使用情況,其中一種方法是將其高度固定爲足夠大的值,並讓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> 

這應該適用於大多數情況。如果我真的想用這種方法過度,我會發現相鄰卡之間的較大高度(在運行時通過ViewTreeObserver),然後將該值設置爲另一個。我懷疑這是必要的。

+0

我試過了但它不必要的擴展視圖,因爲最小值爲100dp。請你詳細介紹一下viewTreeObserver –

+0

@ndeokar就像我說的,你也可以用'80dp',你的'minHeight'。用'ViewTreeObserver',當你的我們可以在需要的視圖上調用getHeight()來獲得它們的計算高度,然後在同一個函數中我們指定新的佈局參數(基於我們使用'getHeight()'來查找最大高度)有意義的是邏輯智慧和性能智慧。 – Shaishav

+0

謝謝!我肯定會試試這個。 –

0

嘗試將android:layout_below="@+id/view_second"更改爲android:layout_alignParentBottom="true"以使底部標記總是位於父佈局的底部。我居然沒有IDE來檢查我的答案是正確的,索裏爲:(

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