Ich möchte ein Layout erstellen, mit dem ich mithilfe des Einschränkungslayouts nach unten scrollen kann, weiß aber nicht, wie ich vorgehen soll. Sollte das ScrollView
der Elternteil ConstraintLayout
davon sein?
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<android.support.constraint.ConstraintLayout
android:id="@+id/Constraint"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Oder umgekehrt? Vielleicht kann mich jemand auf ein gutes Tutorial dazu verweisen oder ein Beispiel geben, ich kann anscheinend keines finden.
Ich weiß auch nicht, ob dies ein Fehler oder eine Konfiguration ist, die ich nicht eingerichtet habe, aber ich habe Bilder wie dieses gesehen:
Wenn sich einige Komponenten außerhalb der Blaupause "blaues Rechteck" befinden, diese jedoch sichtbar sind, kann ich sie auf meiner Seite nicht sehen oder verschieben, wenn ich sie auf dem "weißen Raum" platziere, und sie wird im Komponentenbaum angezeigt .
UPDATE:
Ich habe eine Möglichkeit gefunden, das Einschränkungslayout im Entwurfstool scrollbar zu machen, indem ich eine horizontale Richtlinie verwendet habe, um den Rand des Einschränkungslayouts nach unten zu drücken und über das Gerät hinaus zu erweitern. Danach können Sie die Richtlinie als neuen unteren Rand des Einschränkungslayouts verwenden Verankern Sie die Komponenten.
Es gibt eine Art von Einschränkung, die die Bildlauffunktion unterbricht:
So stellen Sie sicher , dass Sie nicht mit dieser Einschränkung auf einem beliebigen Ansicht , wenn Sie wollen ,
ConstraintLayout
mit sein scrollbarenScrollView
:Wenn Sie diese entfernen, sollte Ihre Schriftrolle funktionieren.
Erläuterung:
Das Einstellen der Größe des Kindes auf die Größe eines
ScrollView
Elternteils widerspricht dem, was die Komponente tun soll. Was wir die meiste Zeit wollen, ist, dass einige Inhalte mit dynamischer Größe scrollbar sind, wenn sie größer als ein Bildschirm / Frame sind. Wenn Sie die Höhe mit dem übergeordnetenScrollView
Element abgleichen, wird der gesamte Inhalt in einem festen Rahmen (der Höhe des übergeordneten Elements) angezeigt, wodurch alle Bildlauffunktionen ungültig werden.Dies geschieht auch, wenn reguläre direkte untergeordnete Komponenten auf eingestellt sind
layout_height="match_parent"
.Wenn Sie möchten, dass das untergeordnete
ScrollView
Element der Größe des übergeordneten Elements entspricht, wenn nicht genügend Inhalt vorhanden ist, setzen Sie es einfachandroid:fillViewport
auf true für dasScrollView
.quelle
Die Verwendung von NestedScrollView mit dem Ansichtsfenster true funktioniert gut für mich
für android x benutze dies
quelle
app:layout_behavior="@string/appbar_scrolling_view_behavior"
Zusammenfassend lässt sich sagen, dass Sie Ihre
android.support.constraint.ConstraintLayout
Ansicht grundsätzlich inScrollView
den Text der*.xml
Datei einbinden, die Ihrem Layout zugeordnet ist.Beispiel activity_sign_in.xml
Hinweis 1: Die Bildlaufleisten werden nur angezeigt, wenn in irgendeiner Weise ein Wrap erforderlich ist, einschließlich des Aufspringens der Tastatur.
Hinweis 2: Es wäre auch keine schlechte Idee, sicherzustellen, dass Ihr ConstraintLayout groß genug ist, um den unteren Rand und die Seiten eines bestimmten Bildschirms zu erreichen, insbesondere wenn Sie einen Hintergrund haben, da dies sicherstellt, dass keine merkwürdigen Leerzeichen vorhanden sind . Sie können dies mit Leerzeichen tun, wenn nichts anderes.
quelle
Verwenden Sie einfach das Einschränkungslayout in
NestedScrollView
oderScrollView
.das ist es. Viel Spaß beim Codieren.
quelle
Um ein scrollbares Layout zu erstellen, ist das Layout korrekt. Es kann erst gescrollt werden, wenn Grund zum Scrollen besteht (genau wie in jedem anderen Layout). Fügen Sie also genügend Inhalte hinzu, und es kann wie bei jedem Layout (linear, relativ usw.) gescrollt werden. Beim Entwerfen mit ConstraintLayout und ScrollView können Sie jedoch im Blueprint- oder Design-Modus nicht richtig scrollen.
Bedeutung:
Sie können ein scrollbares ConstraintLayout erstellen, das jedoch im Editor aufgrund eines nicht berücksichtigten Fehlers / Szenarios nicht ordnungsgemäß gescrollt wird. Obwohl das Scrollen im Editor nicht funktioniert, funktioniert es auf Geräten. (Ich habe mehrere COnstraintLayouts zum Scrollen erstellt und sie getestet.)
Hinweis
In Bezug auf Ihren Code. In der ScrollView fehlt ein schließendes Tag. Ich weiß nicht, ob dies in der Datei der Fall ist oder ob es sich um einen Fehler beim Kopieren und Einfügen handelt, aber Sie können es sich ansehen.
quelle
Zum Vervollständigen der vorherigen Antworten füge ich das folgende Beispiel hinzu, das auch die Verwendung der AppBar berücksichtigt. Mit diesem Code scheint der Android Studio-Designeditor mit dem ConstraintLayout einwandfrei zu funktionieren.
quelle
Sie müssen mein Constraint-Layout mit einem ScrollView-Tag umgeben und ihm die Eigenschaft android geben: isScrollContainer = "true".
quelle
In Version 2.2 gibt es einen Fehler , der das Scrollen im ConstraintLayout unmöglich macht. Ich denke es existiert noch. Sie können alternativ LinearLayout oder RelativeLayout verwenden.
Auch Besuche: Ist es möglich , eine Einschränkung Layout innerhalb eines Scroll zu setzen .
quelle
Das Einschränkungslayout ist die Standardeinstellung für eine neue App. Ich lerne jetzt "Android" und hatte große Schwierigkeiten herauszufinden, wie ich mit dem Standard-Beispielcode umgehen soll, um zu scrollen, wenn eine Tastatur aktiv ist. Ich habe viele Apps gesehen, bei denen ich die Tastatur schließen muss, um auf die Schaltfläche "Senden" zu klicken, und manchmal verschwindet sie nicht. Mit dieser Hierarchie [ScrollView / ContraintLayout / Fields] funktioniert es jetzt einwandfrei. Auf diese Weise können wir die Vorteile und die Benutzerfreundlichkeit von ConstraintLayout in einer scrollbaren Ansicht nutzen.
quelle
Nehmen Sie die untere Schaltfläche aus der verschachtelten Bildansicht heraus und nehmen Sie das lineare Layout als übergeordnetes Element. Fügen Sie als Ihre Kinder bottom und nestedscrollview hinzu. Es wird absolut gut funktionieren. Verwenden Sie im Manifest für die Aktivität Folgendes: Dadurch wird die Schaltfläche beim Öffnen der Tastatur angehoben
quelle
Sie können verwenden
HorizontalScrollView
und es wird auch funktionieren!quelle
So habe ich es gelöst:
Wenn Sie Nested ScrollView verwenden, dh ScrollView in einem ConstraintLayout, verwenden Sie die folgende Konfiguration für ScrollView anstelle von "WRAP_CONTENT" oder "MATCH_PARENT":
quelle
In der Bildlaufansicht machen Sie Höhe und Breite. 0 Fügen Sie die Einschränkungen Top_toBottomOf und Bottom_toTopOf hinzu.
quelle
Für mich schien keiner der Vorschläge zum Entfernen der unteren Einschränkungen oder zum Setzen des Bildlaufcontainers auf true zu funktionieren. Was hat funktioniert: Erweitern Sie die Höhe einzelner / verschachtelter Ansichten in meinem Layout, sodass sie über das übergeordnete Element hinaus "überspannt" werden, indem Sie die Option "Vertikal erweitern" des Constraint-Layout-Editors verwenden (siehe unten).
Für jeden Ansatz ist es wichtig, dass die gepunkteten Vorschaulinien vertikal über die oberen oder unteren Abmessungen des übergeordneten Elements hinausragen
quelle