2017-12-02 11 views
3

最近、私は制約レイアウトを使い始めましたが、今日は非常に奇妙な動作が発生しました。 fragment_holiday.xmlの出力でConstraintLayoutの代わりにRelativeLayoutをルートとして使用している場合、期待どおりの出力ですが、ConstraintLayoutの何が問題なのかを知りたいと思います。 enter image description here親の幅を取る代わりに、制約レイアウトの折りたたみリサイクルビューの行アイテム

---

item_row、フラグメントのために次のように私のコードがあると私はと制約レイアウトで出力を取得しています(そして、あなたは私が共有していますスクリーンショットで見ることができるようにスクロール上、それは異なるbeheviourを示しています)- デザイン期待fragment_holiday.xml

<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_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.thepsi.psidashboard.Fragments.HolidayFragment"> 

    <com.thepsi.psidashboard.CustomViews.CustomDatePicker 
     android:id="@+id/customDatePicker_holiday" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     app:dateFormat="MONTH_YEAR"/> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recycle_view_holiday" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="@dimen/general_margin_eight_dp" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/customDatePicker_holiday" /> 
</android.support.constraint.ConstraintLayout> 

item_holiday.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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_width="match_parent" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:id="@+id/textView25" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginStart="8dp" 
     android:text="24 - January - 2017" 
     android:textColor="@color/colorPrimaryDark" 
     /> 

    <TextView 
     android:id="@+id/textView26" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:text="Saturday" 
     android:layout_alignParentEnd="true" 
     android:textColor="@color/colorPrimaryDark" 
     /> 

    <TextView 
     android:id="@+id/textView27" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/colorAccent" 
     android:text="Mahavir Jayanti" 
     android:textAlignment="center" 
     android:textColor="@android:color/black" 
     android:layout_below="@+id/textView25" 
     /> 
</RelativeLayout> 

enter image description here

誰かが私がここで行方不明です何を教えてもらえますか?

+1

リサイクラービューの幅を確認してください。 "マッチペアレント"を与える –

+1

@ArnoldBrownはいそれは働いた!!!!!!!しかし、なぜそれがドキュメントで書かれているのは、** MATCH_PARENTは、ConstraintLayoutに含まれるウィジェットにはお勧めできません。同様の動作は、MATCH_CONSTRAINT ** –

答えて

7

これを試してみてください...

変更 matchparent として recyclerview

うん!ドキュメントごとにウィジェットConstraintLayoutと一致するの幅に対応していません。

我々は 0dp などを割り当てて、あなたが使用するようにmatchparentを反映するためにconstraintStart_toStartOf = "親"constraintEnd_toEndOf = "親"を使用する必要があります。

しかし、私が与えた解決策は、あなたが持っているようにいくつかのケースで動作します。

0

以下のxmlのようにitem_holiday.xmlを更新してみてください。私は3つのラベルを追加し、制約プロパティを追加しました。 要件に応じてプロパティのラベルを編集する必要があります。

<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_width="match_parent" 
    android:layout_height="wrap_content"> 


    <TextView 
     android:id="@+id/textView" 
     android:layout_width="wrap_content" 
     android:layout_height="30dp" 
     android:layout_marginEnd="88dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="32dp" 
     android:text="TextView" 
     app:layout_constraintEnd_toStartOf="@+id/textView2" 
     app:layout_constraintHorizontal_bias="0.888" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="30dp" 
     android:layout_marginEnd="88dp" 
     android:layout_marginTop="32dp" 
     android:text="TextView" 
     app:layout_constraintEnd_toStartOf="@+id/textView3" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_width="wrap_content" 
     android:layout_height="30dp" 
     android:layout_marginEnd="16dp" 
     android:layout_marginTop="32dp" 
     android:text="TextView" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 
</android.support.constraint.ConstraintLayout> 
+0

を使用して定義することができます。返信ありがとうございますが、私はあなたが与えたように固定ディメンズを持っている必要はありません。私は期待されたデザインで私の答えを更新しています。 –

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" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:id="@+id/textView25" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:text="24 - January - 2017" 
     android:textColor="@color/colorPrimaryDark" 
     app:layout_constraintEnd_toStartOf="@+id/textView26" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <TextView 
     android:id="@+id/textView26" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:gravity="right" 
     android:text="Saturday" 
     android:textColor="@color/colorPrimaryDark" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintLeft_toRightOf="@+id/textView25" 
     app:layout_constraintTop_toTopOf="@+id/textView25" /> 

    <TextView 
     android:id="@+id/textView27" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:background="@color/colorAccent" 
     android:text="Mahavir Jayanti" 
     android:textAlignment="center" 
     android:textColor="@android:color/black" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/textView25" /> 
</android.support.constraint.ConstraintLayout> 
+0

返事のためのタクシー。成功しません:(これは[this](https://lh3.googleusercontent.com/-1JCo5b7hiDE/WifGJhvxo2I/AAAAAAAABjQ/MFqm0eIqWj0rh0651cdO3tR29UfClsXuQCL0BGAYYCw/h1920/2017-12-06.png)のようになりました。 –

0

リサイクラービューで高さと垂直方向の制約について同様の問題があり、新しいサポートライブラリバージョン27.0.2と制約レイアウトバージョン1.1.0-beta4を使用して最終的に予想される動作が得られました。 制約レイアウトで奇妙な振る舞いをすると、誰もがそのバージョンにぶつかるように勧めます。

関連する問題