0

を動作しません、私はConstraintLayoutを使用して、このシンプルなレイアウトを構築したい:予想通り問題 - 垂直方向のマージンは

Layout with two text views

それが動作するときタイトルは微妙は1つだけ行のテキストです。問題は、長いテキストが付いています。あなたが見ることができるように、互いにタイトル微妙な重複:

Results

は、ここで私はレイアウトのために使用するソースコードです:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 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="match_parent"> 

    <android.support.constraint.ConstraintLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:background="#EEEEEE"> 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="24dp" 
      android:layout_marginLeft="16dp" 
      android:layout_marginRight="16dp" 
      android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." 
      android:textAppearance="@style/TextAppearance.AppCompat.Headline" 
      app:layout_constraintTop_toTopOf="parent" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintRight_toRightOf="parent" /> 

     <TextView 
      android:id="@+id/textView2" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="16dp" 
      android:layout_marginLeft="16dp" 
      android:layout_marginRight="16dp" 
      android:layout_marginBottom="24dp" 
      android:text="Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." 
      app:layout_constraintTop_toBottomOf="@+id/textView1" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintRight_toRightOf="parent" 
      app:layout_constraintBottom_toBottomOf="parent" /> 

    </android.support.constraint.ConstraintLayout> 

</FrameLayout> 

だからここで問題がありますか?


EDIT 1 2017年10月5日13:19

は唯一のAndroid 6.0(API 23)を実行しているデバイス/シミュレータ上で再現できるように思えます。 API 21-22、24+を実行している端末では正常に動作します。

答えて

1

ため

app:layout_constraintBottom_toTopOf="@+id/textView2" 

を追加します。これを使うと、パック 2 TextViewsをすることができますし、でframeLayout、あなたが直面している問題なくConstraintLayout自体に垂直にセンタリング:

<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="match_parent" 
    android:background="#EEEEEE"> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="16dp" 
     android:layout_marginRight="16dp" 
     android:layout_marginTop="24dp" 
     android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." 
     android:textAppearance="@style/TextAppearance.AppCompat.Headline" 
     app:layout_constraintBottom_toTopOf="@+id/textView2" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintVertical_chainStyle="packed" /> 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="24dp" 
     android:layout_marginLeft="16dp" 
     android:layout_marginRight="16dp" 
     android:layout_marginTop="16dp" 
     android:text="Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/textView1" /> 

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

うん、 "パックされた"チェーンスタイルはその問題を解決しました。ありがとう! –

0

TextView1には下限がありません。

だけで私はあなたがあなたのchaining optionを与えるだけConstraintLayoutを使用することをお勧めあなたの最初のTextView

+0

あなたのソリューションは機能しますが、この特定のケースでのみ機能します。これらのテキストビューの上にImageViewを追加すると、レイアウトに関する奇妙な問題が発生します。例えば、この質問を見てくださいhttps://stackoverflow.com/questions/46588508/problems-with-constraintlayout-imageview-169-inappropriate-top-margin –

3

をAPI 23日ConstraintLayoutバージョン1.0.0-beta5と、それは次のようになります上マージンが尊重されていないか、または頂点の高さがTextViewで正しく計算されていません。 API23では重複が見られますが、このバージョンのConstraintLayoutではAPI24では重複がありません。

ただし、ConstraintLayoutバージョン1.1.0-beta2では、API 23とAPI 24ではすべてが正常に見えるため、修正された問題であった可能性があります。問題が解決しない場合は、ConstraintLayoutの最新リリースにアップグレードすることをお勧めします。

+0

私は1.1.0-beta2でテストしました。はい、そのリリースで修正されたようです。しかしまだベータ版であるので、これまで使用していない方がいいです。生産のためのように見えるチェーンを使用する方が良い= "パック"これまで。 –

関連する問題