Ich verwende ConstraintLayout beta4 und versuchen, eine horizontale Kette über den Bildschirm programmgesteuert zu erstellen.Programmgesteuerte Verbindung mehrerer Ansichten auf eine beliebige Größe mit ConstraintLayout
Das Problem, das ich in laufen lasse, wenn ich mehrere Ansichten zusammen in einer Kette über den Bildschirm (ex: Left side of layout <-> leftButton <-> rightButton <-> Right side of layout)
dann gar nichts auftaucht verbinden. Hier
ist der Code, der nicht funktioniert:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ConstraintLayout layout = (ConstraintLayout) View.inflate(this, R.layout.activity_main, null);
setContentView(layout);
ConstraintSet set = new ConstraintSet();
set.clone(layout);
ConstraintLayout.LayoutParams anySizeParams = new ConstraintLayout.LayoutParams(0,0);
ImageButton leftButton = new ImageButton(this);
leftButton.setId(View.generateViewId());
leftButton.setLayoutParams(anySizeParams);
layout.addView(leftButton);
ImageButton rightButton = new ImageButton(this);
rightButton.setId(View.generateViewId());
rightButton.setLayoutParams(anySizeParams);
layout.addView(rightButton);
set.connect(leftButton.getId(),ConstraintSet.LEFT,layout.getId(),ConstraintSet.LEFT,0);
set.connect(leftButton.getId(),ConstraintSet.RIGHT,rightButton.getId(),ConstraintSet.LEFT,0);
set.connect(leftButton.getId(),ConstraintSet.TOP,layout.getId(),ConstraintSet.TOP,0);
set.connect(leftButton.getId(),ConstraintSet.BOTTOM,layout.getId(),ConstraintSet.BOTTOM,0);
set.connect(rightButton.getId(),ConstraintSet.LEFT,rightButton.getId(),ConstraintSet.RIGHT,0);
set.connect(rightButton.getId(),ConstraintSet.RIGHT,layout.getId(),ConstraintSet.RIGHT,0);
set.connect(rightButton.getId(),ConstraintSet.TOP,layout.getId(),ConstraintSet.TOP,0);
set.connect(rightButton.getId(),ConstraintSet.BOTTOM,layout.getId(),ConstraintSet.BOTTOM,0);
set.applyTo(layout);
}
}
Und hier ist ein Screenshot von dem obigen Code: programmatically created.
Nachfolgend finden Sie einige xml, die die gleiche Sache beschreibt und funktioniert gut, als Referenz:
<ImageButton
android:layout_width="0dp"
android:layout_height="0dp"
android:id="@+id/right_button"
app:layout_constraintLeft_toRightOf="@+id/left_button"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
<ImageButton
android:layout_width="0dp"
android:layout_height="0dp"
android:id="@+id/left_button"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/right_button"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
Hier ein Screenshot des xml: manually created