Ich versuche, eine horizontale LinearLayout
konvertieren, die 4 Tasten der gleichen Größe zu einem ConstraintLayout
hat. Das Problem ist, dass, wenn ich eine oder mehrere Tasten auf android:visibility="gone"
in LinearLayout
setzen die verbleibenden Tasten Größe ändern, um den gesamten Raum nehmen (alle werden die gleiche Größe) und in der ConstraintLayout
die Tasten entfernt sind, aber immer noch den Raum nehmen.Convert LinearLayout in ConstraintLayout Problem
EDIT: Je nach App-Status werden verschiedene Schaltflächen sichtbar sein.
Was muss ich ändern, damit sich die ConstraintLayout
wie die LinearLayout
verhält?
EDIT: Ich fand einen Fehler in der ConstraintLayout (Constraint-Referenzen), also habe ich es aktualisiert und die Bilder (das Problem besteht immer noch).
LinearLayout
xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:id="@+id/b1"
android:text="B1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="50"
/>
<Button
android:id="@+id/b2"
android:text="B2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="50"
android:visibility="gone"
/>
<Button
android:id="@+id/b3"
android:text="B3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="50"
/>
<Button
android:id="@+id/b4"
android:text="B4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="50"
/>
</LinearLayout>
EDIT:ConstraintLayout
xml:
<?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">
<Button
android:id="@+id/b1"
android:text="B1"
android:layout_width="0px"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@+id/b2"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_weight="1"
/>
<Button
android:id="@+id/b2"
android:text="B2"
android:layout_width="0px"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintLeft_toRightOf="@+id/b1"
app:layout_constraintRight_toLeftOf="@+id/b3"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_weight="1"
/>
<Button
android:id="@+id/b3"
android:text="B3"
android:layout_width="0px"
android:layout_height="wrap_content"
app:layout_constraintLeft_toRightOf="@+id/b2"
app:layout_constraintRight_toLeftOf="@+id/b4"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_weight="1"
android:layout_marginTop="0dp"/>
<Button
android:id="@+id/b4"
android:text="B4"
android:layout_width="0px"
android:layout_height="wrap_content"
app:layout_constraintLeft_toRightOf="@+id/b3"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintHorizontal_weight="1"
/>
</android.support.constraint.ConstraintLayout>
Warum möchten Sie das lineare Layout ersetzen, wenn es korrekt funktioniert? ist es langsam? isst es viel Gedächtnis? – pskink
Ich habe eine komplexe Layoutstruktur, also konvertiere ich sie in ein Constraint-Layout. Dies ist ein Teil, den ich nicht konvertieren konnte. – Hanan
Ich weiß, dass ich das lineare Layout in das Beschränkungslayout einbetten kann, aber möchte es vermeiden (nach meinem Verständnis ist der Zweck des Einschränkungslayouts das Entfernen der tiefen Layouthierarchie). – Hanan