2017-04-07 117 views
7

我試圖利用ConstraintLayout(1.0.2版本)來設定的2並排側視圖高度符合他們的最高的一個。這對於RecyclerView,其中每個TextView的獲取文本的任意長度作爲ViewHolder ...ConstraintLayout:在排所有視圖設置高度符合最高的一個

如果我設置每到WRAP_CONTENT,較短的人會縮小。 如果我設置既0dp(match_contraints),兩者都結束了0的高度。

這裏的設置:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_marginLeft="2dp" 
    android:layout_marginRight="2dp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:id="@+id/id1" 
     android:layout_width="60dp" 
     android:layout_height="0dp" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintEnd_toStartOf="@+id/id2"/> 

    <TextView 
     android:id="@+id/id2" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintStart_toEndOf="@+id/id1" 
     app:layout_constraintEnd_toEndOf="parent"/> 

</android.support.constraint.ConstraintLayout> 

我想這是一個錯誤,因爲 「0dp」 應該更像match_parent比實際0 DP。

在iOS上,順便說一下,相當於自動佈局規則(設定觀點高度相匹配的頂部和父的底部)產生預期的結果。

當然,這是非常簡單的使用的LinearLayout,但這種佈局中扮演着一個更大的佈局的一部分,我想修剪視圖層次...

回答

2

接聽,萬一有人正在尋找出未來的答案。

ConstraintLayoutV1.1介紹Barrier實現由OP的問題

上面提到的功能,可以使用下面的XML來實現的問了一句這樣的功能:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_marginLeft="2dp" 
    android:layout_marginRight="2dp" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:id="@+id/id1" 
     android:layout_width="60dp" 
     android:layout_height="0dp" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintEnd_toStartOf="@+id/id2" 
     app:layout_constraintBottom_toBottomOf="@+id/barrier" 
     android:text="@string/id1_text" /> 

    <TextView 
     android:id="@+id/id2" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintStart_toEndOf="@+id/id1" 
     app:layout_constraintEnd_toEndOf="parent" 
     android:text="@string/id2_text" /> 

    <android.support.constraint.Barrier 
     android:id="@+id/barrier" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:barrierDirection="bottom" 
     app:constraint_referenced_ids="id1,id2" /> 

</android.support.constraint.ConstraintLayout> 
+1

您應該使用Ctrl + K或Cmd + K來正確格式化您的源代碼塊。 –

1

這可以幫助你。

<android.support.constraint.ConstraintLayout 
    android:id="@+id/activity_main" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin"> 

    <TextView 
     android:id="@+id/tv_1" 
     android:layout_width="150dp" 
     android:layout_height="match_parent" 
     android:layout_marginEnd="8dp" 
     android:layout_marginRight="8dp" 
     android:background="@color/colorAccent" 
     android:gravity="center" 
     android:padding="@dimen/activity_vertical_margin" 
     android:text="sjdjhshdjhdjhsdgfjhgsdjfgjsdgfjsdgfhgdsjhfghs" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toLeftOf="@+id/tv_2" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <TextView 
     android:id="@+id/tv_2" 
     android:layout_width="150dp" 
     android:layout_height="match_parent" 
     android:background="@color/colorPrimary" 
     android:gravity="center" 
     android:padding="@dimen/activity_vertical_margin" 
     android:text="sjdjhsjhd" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toRightOf="@+id/tv_1" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

</android.support.constraint.ConstraintLayout> 

enter image description here

enter image description here

+0

不工作。也許你的垂直填充隱藏了問題。 – jazzgil

+0

無論如何,match_parent不被支持,並被視爲0dp,AFAIK。 – jazzgil

+0

我注意到,固定寬度(60dp)和match_parent高度,它將工作。 – CodeCameo

相關問題