2016-08-20 2 views
0

목록의 모든 열에 동일한 레이아웃 높이를 적용하고 싶습니다. 나는 GridLayoutManager 열 높이 문제

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

GridLayoutManager

preview

사용하고 이것은

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

모두 열 같은 높이하지만 항목 이름이 더 큰 경우 가 바닥 틱 다르게 배치지고있다 열 XML 파일입니다. 누구든지이 문제를 해결할 수있는 방법을 제안 해 줄 수 있습니까? 덕분에

+0

에 대한 sory? 그리고 스크린 샷을 IDE가 없습니다. – 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

하나의 제에 비해 상승 나는 것을 시도 하지만 min이 100dp 이후 불필요하게 뷰를 늘리면 viewTreeObserver에 대해 자세히 알 수 있겠습니까? –

+0

@ndeokar 내가 말했듯이, 당신은'minHeight' 인'80dp '도 사용할 수 있습니다.'ViewTreeObserver'를 사용하면 (콜백'onPreDraw()'를 통해) 뷰가 그려지기 시작했습니다. 거기에서 필요한 뷰에 대해 getHeight()를 호출하여 계산 된 높이를 얻은 다음 동일한 함수 내에서 새로운 레이아웃 매개 변수를 지정합니다 우리가보기에'getHeight()'를 사용하여 찾은 최대 높이).이 de finitely Logic과 현명한 성능 모두 약간의 작업입니다. – Shaishav

+0

감사합니다. 나는 이것을 확실히 시도 할 것이다. –

0

android:layout_below="@+id/view_second"android:layout_alignParentBottom="true"으로 변경하여 하단 레이아웃을 항상 부모 레이아웃 하단에 표시하십시오. 실제로, 내 대답이 정확한지 확인하기 위해 하나가 바닥 틱은 그 :(

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