Mit ListView-innen ConstraintLayout
Habe ich gelesen, auf Android-Entwickler, dass ConstraintLayout kann verwendet werden, um das design einer responsive layout für eine Anwendung. Es besteht eine Eltern-ConstraintLayout die Häuser eine Symbolleiste und zwei andere ConstraintLayouts. Das erste Kind ConstraintLayout ist handeln als leere Ansicht für meine ListView. Die zweite ConstraintLayout hält meine listview und ein floating-action-button. Derzeit ist die listview erscheint unter der Symbolleiste, anstatt darunter. Auch wie man in dem screenshot sieht, wird die floating-action-button erscheint außerhalb sichtbaren Bereichs.
Siehe screenshot unten:
- Und das ist das app-layout, wenn die Liste leer ist:
Dies ist der code für mein layout:
<?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:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<android.support.v7.widget.Toolbar xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
<android.support.constraint.ConstraintLayout
app:layout_constraintTop_toBottomOf="@id/toolbar"
android:id="@+id/empty_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="?attr/actionBarSize">
<TextView
app:layout_constraintTop_toTopOf="parent"
android:id="@+id/tv_empty_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/list_is_empty"
android:textSize="@dimen/large_text"
android:textStyle="bold"
/>
<ImageView
android:id="@+id/iv_empty_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/tv_empty_view"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:contentDescription="@string/list_is_empty"
android:src="@drawable/emptybox" />
</android.support.constraint.ConstraintLayout>
<android.support.constraint.ConstraintLayout
android:id="@+id/main_area"
android:layout_marginTop="50dp"
android:layout_marginBottom="?actionBarSize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/toolbar"
app:layout_constraintBottom_toBottomOf="parent">
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="?attr/actionBarSize"
android:layout_marginLeft="@dimen/margin_side"
android:layout_marginStart="@dimen/margin_side"
android:layout_marginRight="@dimen/margin_side"
android:layout_marginEnd="@dimen/margin_side"
android:layout_marginTop="?attr/actionBarSize"
/>
<android.support.design.widget.FloatingActionButton
android:layout_below="@+id/listview"
android:id="@+id/fab"
android:layout_width="@android:dimen/notification_large_icon_width"
android:layout_height="@android:dimen/notification_large_icon_height"
android:layout_gravity="end|bottom"
android:src="@drawable/plus"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
/>
</android.support.constraint.ConstraintLayout>
</android.support.constraint.ConstraintLayout>
- Hinzufügen Sie nicht
constraints
zweiConstraintLayouts
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Während der Verwendung
ConstraintLayout
Sie Hinzugefügt haben, um die Einschränkungen für 'constraintTop',constraintRight
,constraintBottom
,constraintLeft
oderconstraintStart
undconstraintEnd
. nur wenn Sie Einschränkung alle Ihre vier Seiten der constraint-layout (oder ein Constraint Starten oder zu Beenden, mit anderen Referenzen) funktioniert gut. Ansonsten wird das layout nicht korrektWeitere Referenz https://codelabs.developers.google.com/codelabs/constraint-layout/index.html?index=..%2F..%2Findex#0
https://developer.android.com/training/constraint-layout/index.html
Gibt es ein paar Dinge, die Sie verbessern können im XML-und machen das design einfacher.
Erste, die Haupt-layout entspricht dem Bildschirm, um die Vorschau korrekt simulieren, können Sie seine Breite/Höhe match_parent
Dann, Android Studio sollte Ihnen Warnungen/Fehler und sagen:
The view is not constrained horizontally/vertically
. InConstraintLayout
haben, müssen Sie Einschränkungen festlegen, wie Ihre Ansichten platziert werden. Wenn Sie nicht standardmäßig position auf 0/0 und wird wahrscheinlich anders Aussehen, wenn es auf dem Gerät ausgeführt wird:Nun, Sie sollten in der Lage sein, dass die main_area überschneidungen mit der Symbolleiste. Um es zu beheben, können Sie ändern main_area Höhe entsprechend der Auflagen:
Sollten Sie in der Lage sein, erhalten Sie eine design ähnlich wie das, was Sie soll.
Hier ist das gewünschte Ergebnis, ich habe einige änderungen vorgenommen, wie Seitenränder, src, nur um es in meinem studio, so müssen Sie wählen, was Sie verwenden, ersetzen Sie einfach mine mit Ihren SRK und Margen usw...
Hier ist die Ausgabe: