0

私は、ConstraintLayoutのスプレッドチェーンに一緒にチェーンされた半ダースのウィジェットのセットを持っています。このビューには他のレイアウトはなく、ConstraintLayoutとウィジェットだけがあります。中央にあるウィジェットのスプレッドチェーンConstraintLayoutの2つの隣接するビューをパックします

二つの一方が他方のためのタイトルですので、近くに一緒にする必要があります:

widget-title 
widget-EditText 

私は私のウィジェットのすべてに広がりチェーン(センター垂直)を使用したいです私はこれらの2つを特に垂直方向にまとめて、上部のマージンの下端と下部のマージンを尊重してほしい。

私はそれを行う方法を理解できません。私はそれらを垂直型LinearLayoutの子としてまとめることを試みましたが、普及したチェーンに正しく参加することを拒否しました - それはトップに行き、他のウィジェットの多くは消えます。

私は2つのビューに追加の制約を追加しようとしましたが、スプレッドチェーンはすべての追加の制約をオーバーライドしているようで、効果はありません。唯一の例外は、ベースラインを整列させることです。これは動作しますが、それらを一緒にスムーズにします。これは望ましくありません。

同じConstraintLayout内に複数のスプレッドチェーンを作成して、すべてが均等に広がるような方法はありません。

チェーン内の2つ(またはそれ以上)のウィジェットをグループ化して、スプレッドルールがチェーンの残りのルールと異なるようにするにはどうすればよいですか?そうでない場合、どのようにすべて同じものに広がる複数のチェーンを構築しますか?

+0

画像はここで役立ちます。あなたは 'ConstraintLayout'のガイドラインを見ましたか?それはあなたにいくつかの追加の柔軟性を与えるかもしれません。 – Cheticamp

答えて

1

LinearLayoutに2つのセンターウィジェットをマッピングしたときに、何かが間違っていたはずです。次のレイアウトはそれだけで、あなたが望むと思うように動作するようです。私はチェーンにViewをたくさん追加していませんでしたが、それを考えれば十分です。見てみな。

<?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="match_parent"> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView1" 
     app:layout_constraintBottom_toTopOf="@id/layout" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintVertical_chainStyle="spread" /> 

    <LinearLayout 
     android:id="@+id/layout" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintBottom_toTopOf="@id/textView4" 
     app:layout_constraintTop_toBottomOf="@id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/textView2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="10dp" 
      android:text="TextView2" /> 

     <TextView 
      android:id="@+id/textView3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="8dp" 
      android:text="TextView3" /> 
    </LinearLayout> 

    <TextView 
     android:id="@+id/textView4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView4" 
     app:layout_constraintBottom_toBottomOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/layout" /> 

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

あなたの答えは私に戻り、もう一度やり直すことを納得させました。新しくレイアウトされたAndroidスタジオで元の動作を再現することができました.LinearLayoutはうまく動作しませんでした。しかし、今回はlayout_heightをwrap_contentに設定しようとしましたが、すべてが修正されました。ありがとう。 – user3562927

関連する問題