it-swarm.com.de

so legen Sie eine unterschiedliche Gewichtung für Layout-Ansichten mit Einschränkungen fest

In meinem Layout habe ich 2 textview in horizontal mit gleichem Gewicht mit Constraint-Layout, aber ich möchte beide textview mit unterschiedlichem Gewicht im Verhältnis 6: 4. 

wie kann ich dies in meinem Layout mit Constraint-Layout erreichen?.

15
Prashant Jajal

In XML

Erstellen Sie eine horizontale Kette und verwenden Sie dann das app:layout_constraintHorizontal_weight-Attribut:

<?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/one"
        Android:layout_width="0dp"
        Android:layout_height="48dp"
        Android:background="#caf"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@+id/two"
        app:layout_constraintHorizontal_weight="6"/>

    <TextView
        Android:id="@+id/two"
        Android:layout_width="0dp"
        Android:layout_height="48dp"
        Android:background="#fac"
        app:layout_constraintLeft_toRightOf="@+id/one"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintHorizontal_weight="4"/>

</Android.support.constraint.ConstraintLayout>

 enter image description here

In Java

Erstellen Sie Ihre Ansichten und fügen Sie sie der übergeordneten Variable ConstraintLayout hinzu. Sie müssen jedem eine id geben, damit alles funktioniert. Sie können View.generateViewId() verwenden oder eine id-Ressource für sie definieren.

// this will be MATCH_CONSTRAINTS width and 48dp height
int height = (int) (getResources().getDisplayMetrics().density * 48);
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(0, height);

View left = new View(this);
left.setId(R.id.one);
parent.addView(left, params);

View right = new View(this);
right.setId(R.id.two);
parent.addView(right, params);

Erstellen Sie dann ein ConstraintSet-Objekt und erstellen Sie Ihre Kette:

ConstraintSet set = new ConstraintSet();
set.clone(parent);

int[] chainIds = { R.id.one, R.id.two }; // the ids you set on your views above
float[] weights = { 6, 4 };
set.createHorizontalChain(ConstraintSet.PARENT_ID, ConstraintSet.LEFT,
                          ConstraintSet.PARENT_ID, ConstraintSet.RIGHT,
                          chainIds, weights, ConstraintSet.CHAIN_SPREAD);

set.applyTo(parent);
34
Ben P.

Nach einigen Recherchen führe ich andere Lösungen mit Blick auf die Richtlinien aus.

<?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:id="@+id/main"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@Android:color/white">

<TextView
    Android:id="@+id/textView3"
    Android:layout_width="0dp"
    Android:layout_height="wrap_content"
    Android:background="@color/green_color"
    Android:fontFamily="@font/overpass_light"
    Android:textAllCaps="true"
    Android:textColor="@color/dark_grey_button"
    Android:textSize="@dimen/h5"
    app:layout_constraintEnd_toStartOf="@+id/guideline"
    app:layout_constraintStart_toStartOf="parent"/>

<TextView
    Android:id="@+id/textView4"
    Android:layout_width="0dp"
    Android:layout_height="wrap_content"
    Android:background="@color/grey_text"
    Android:fontFamily="@font/overpass_light"
    Android:textAllCaps="true"
    Android:textColor="@color/dark_grey_button"
    Android:textSize="@dimen/h5"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="@+id/guideline"
    app:layout_constraintTop_toTopOf="parent"/>

<Android.support.constraint.Guideline
    Android:id="@+id/guideline"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:orientation="vertical"
    app:layout_constraintGuide_percent="0.6"
    />


  </Android.support.constraint.ConstraintLayout>

hier ist der Screenshot für das obige Layout. Sie müssen nur die Richtlinienansicht ziehen .  drag the % wish shows your guideline view

4
Prashant Jajal

Für eine bessere Erfahrung und Unterstützung von RTL & LTR verwenden Sie Start/Ende anstelle von links/rechts:

<?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/one"
    Android:layout_width="0dp"
    Android:layout_height="48dp"
    Android:background="#caf"
    layout_constraintStart_toStartOf="parent"
    layout_constraintEnd_toStartOf="@+id/two"
    app:layout_constraintHorizontal_weight="6"/>

<TextView
    Android:id="@+id/two"
    Android:layout_width="0dp"
    Android:layout_height="48dp"
    Android:background="#fac"
    layout_constraintEnd_toEndOf="@+id/one"
    layout_constraintStart_toEndOf="parent"
    app:layout_constraintHorizontal_weight="4"/>
</Android.support.constraint.ConstraintLayout>`
0
Golan Shay