8

Mam widok w ConstrainLayout w następujący sposób.Android: Jak programowo ustawić layout_constraintRight_toRightOf "rodzic"

<TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:maxWidth="260dp" 
     android:textColor="#FFF" 
     android:textSize="16sp" 
     app:layout_constraintLeft_toLeftOf="@+id/parent" 
     app:layout_constraintTop_toBottomOf="@id/message_date" 
     android:id="@+id/text_main" 
     /> 

chciałbym zmienić widok albo app:layout_constraintLeft_toLeftOf="@+id/parent" lub layout_constraintLeft_toRightOf="@+id/parent" programowo w recycleViewHolder oparte na pewnych warunkach.

+0

Prawdopodobny duplikat [Dodaj widok do constraintLayout z ograniczeniami podobnymi do innego dziecka] (http://stackoverflow.com/questions/39831710/add-view-to-constraintlayout-z -składami-podobne-do-another-child) – W4R10CK

+0

@ W4R10CK Nie chcę dodawać widoku, chcę tylko zmienić wyrównanie. Czy możesz opublikować odpowiednią część tej odpowiedzi? – Relm

Odpowiedz

12

Oto przykład ustawiania przycisk do dołu widzenia dominującej przy użyciu kodu Java:

ConstraintLayout constraintLayout; 
ConstraintSet constraintSet; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    constraintLayout = (ConstraintLayout) findViewById(R.id.activity_main_constraint_layout); 

    Button button = new Button(this); 
    button.setText("Hello"); 
    constraintLayout.addView(button); 

    constraintSet = new ConstraintSet(); 
    constraintSet.clone(constraintLayout); 

    constraintSet.connect(button.getId(), ConstraintSet.LEFT, constraintLayout.getId(), ConstraintSet.RIGHT, 0); 
    constraintSet.constrainDefaultHeight(button.getId(), 200); 
    constraintSet.applyTo(constraintLayout); 

} 

osiągnąć coś takiego,

app:layout_constraintLeft_toLeftOf="@+id/parent" 

kod Java powinien wyglądać następująco

set.connect(YOURVIEW.getId(),ConstraintSet.LEFT,ConstraintSet.PARENT_ID,ConstraintSet.LEFT,0); 

i aby osiągnąć coś takiego,

layout_constraintLeft_toRightOf="@+id/parent" 

kod Java powinien wyglądać tak,

set.connect(YOURVIEW.getId(),ConstraintSet.LEFT,ConstraintSet.PARENT_ID,ConstraintSet.RIGHT,0); 

Tutaj Jestem zakładając android:id="@+id/parent" jest id rodzica ConstraintLayout.

+0

'set.applyTo (layout);' czy to nie stosuje tych ograniczeń do rodzica zamiast 'TextView'? Tak być powinno ? 'set.applyTo (button);' lub coś podobnego? – Relm

+0

Żaden zestaw nie wie do kogo chcesz zastosować zmiany, teraz nadszedł czas, aby powiedzieć układowi nadrzędnego, hej, proszę zastosować te zmiany. więc powinno to być jak set.applyTo (rodzic). –

+0

Twój kod jest nieprawidłowy, najpierw musisz dodać przycisk w układzie ograniczeń, a następnie constraintSet.clone (constraintLayout); zostanie wykonana. W przeciwnym razie nic nie zostanie zrobione przyciskowi –

Powiązane problemy