2017-11-04 8 views

答えて

4

USEへの障壁

は、動的な高さを持つ2つのTextViewを持っていると言うと、あなただけの最も高いのTextView下のボタンを配置したい:

Task view

ONLYレイアウトで直接実装する方法は、水平方向のバリアを使用することです。このバリアでは、2つのTextViewの高さに基づいて制約を指定できます。次に、Buttonの上端を水平方向のバリアの下部に拘束します。

<?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/left_text_view" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
     android:textSize="16sp" 
     android:background="#AAA" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintEnd_toStartOf="@+id/right_text_view" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <TextView 
     android:id="@+id/right_text_view" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginEnd="8dp" 
     android:text="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" 
     android:textSize="16sp" 
     android:background="#DDD" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toEndOf="@+id/left_text_view" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <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="left_text_view,right_text_view" /> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:text="Button" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="@+id/barrier" /> 

</android.support.constraint.ConstraintLayout> 

ガイドライン

を使用するためにあなたは彼らが持っているものは何でも、コンテンツ画面の高さの30%に上記のTextViewの高さを制限したいと言います。

Test view

あなたがそのガイドラインに割合の位置および制約のTextViewの底部と水平ガイドラインを追加する必要があることを実装します。

<?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/left_text_view" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_marginBottom="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     android:background="#AAA" 
     android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
     android:textSize="16sp" 
     app:layout_constraintBottom_toTopOf="@+id/guideline" 
     app:layout_constraintEnd_toStartOf="@+id/right_text_view" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <TextView 
     android:id="@+id/right_text_view" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     android:layout_marginBottom="8dp" 
     android:background="#DDD" 
     android:text="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" 
     android:textSize="16sp" 
     app:layout_constraintBottom_toTopOf="@+id/guideline" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toEndOf="@+id/left_text_view" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:text="Button" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="@+id/guideline" /> 

    <android.support.constraint.Guideline 
     android:id="@+id/guideline" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     app:layout_constraintGuide_percent="0.3" /> 

</android.support.constraint.ConstraintLayout> 

結論

バリアと指針との間の唯一の違いは、バリアの位置は、それとガイドラインの位置は常に固定されている内に含まれる複数のUI要素のサイズに基づいて、常に柔軟であることです。

1

Official documentation on Barrier

A障壁は、入力として、複数のウィジェットを参照し、指定された側の最も極端なウィジェットに基づいて仮想ガイドラインを作成します。たとえば、左のバリアは、参照されるすべてのビューの左に揃えられます。

Training docs on Barrier

指針と同様に

、障壁は、あなたがするビューを制約することができます目に見えないラインです。障壁がそれ自身の位置を定義しないことを除いて;バリア位置は、その中に含まれるビューの位置に基づいて移動します。これは、特定のビューではなくビューのセットにビューを制限する場合に便利です。

関連する問題