ScrollView nicht scrollen, um das Ende der inneren LinearLayout unteren Rand
Habe ich Probleme mit einem Fragment, bestehend aus einem ScrollView mit einem LinearLayout. Ich versuche einen Effekt zu erstellen, wo das LinearLayout hat einen weißen hintergrund und sieht aus wie ein Stück Papier, das scrollen auf einem farbigen hintergrund. Die Art und Weise, die ich versuche zu erreichen, dieses ist durch die ScrollView besetzen die gesamte Grundfläche des fragments und dann das LinearLayout hat android:layout_margin="16dp"
Raum geschaffen, um das "Papier".
Diese Weise wird die Bildlaufleiste der ScrollView wird in den farbigen hintergrund, der Rand oben scrollt sofort zusammen mit dem Inhalt und der Rand auf der Unterseite nur laufen, wenn man das Ende erreicht hat.
Leider in dieser Konfiguration wird die ScrollView nicht scrollen den ganzen Weg bis zum Ende und in der Tat schneidet eine sehr kleine Menge des Textes an der Unterseite. Ich vermute, dass der ScrollView nicht unter Berücksichtigung seines Kindes Margen in seine vertikale Scroll-Abstand. Um dieses Problem zu lösen habe ich gewickelt das LinearLayout in einem FrameLayout das löst das Problem, aber scheint überflüssig. Irgendwelche Hinweise, wie um diese zu beseitigen nicht mehr benötigte container werden würde geschätzt.
Hinweis: Einstellung android:padding="16dp"
auf die ScrollView und Verschrottung die Margen nicht den gewünschten Effekt haben, als dann die Polsterung erscheint auf allen vier Kanten kontinuierlich, unabhängig von der scroll-position.
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
tools:context=".ArticleFragment" >
<!-- This FrameLayout exists purely to force the outer ScrollView to respect
the margins of the LinearLayout -->
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp"
android:layout_margin="16dp"
android:background="@color/page_background" >
<TextView
android:id="@+id/article_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textIsSelectable="true" />
<TextView
android:id="@+id/article_content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textIsSelectable="true" />
</LinearLayout>
</FrameLayout>
</ScrollView>
- Habe versucht
android:layout_height="fill_parent"
zu denScrollView
? - Ja, keine Freude. Die Größe der ScrollView ist nicht wirklich ein Problem - es füllt den Raum zur Verfügung, um es angemessen. Es ist der Bereich von Blättern, dass es nicht scrollen, um das Ende seiner Inhalte, wenn seine sofortige Kind hat einen Rand. Ich glaube das Problem wird verursacht, indem es sich nicht nehmen, seinem Kind die Marge berücksichtigt bei der Berechnung der Bildlaufbereich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich erinnere mich an Probleme mit der
ScrollView
irgendwie nicht das Ende, es ist der Inhalt, wenn der Inhalt layout hat einen oberen Rand. Ich löste das problem mit ein wenig hacken, hinzufügen eines leeren Blick an das Ende derLinearLayout
:Habe ich eine ähnliche leere Ansicht auch in der Anfang der
LinearLayout
zu vermeiden, oberen/unteren Ränder vollständig.EDIT: habe gerade realisiert, dass Sie wollte, dass das Ende von "paper" zu zeigen, bis bei erreichen des Ende der Ansicht. In diesem Fall möchten Sie vielleicht, um den hintergrund Farbe auf die
TextView
s statt das layout selbst. Dann stellen Sie sicher, es gibt keinen Spielraum zwischen dem Titel und dem Artikel (verwenden Polsterung, die als Trennung).EDIT2: ich sollte lernen, zu überprüfen, Wann die Fragen gestellt wurden... Naja, vielleicht hilft noch jemand. 🙂
Die Frage ist alt, aber ich habe Probleme mit ScrollView schlecht benommen beim wickeln FrameLayout. Es scheint auch nicht zu berücksichtigen, dass die Margen der enthaltenen layouts. Sie ersetzen könnte, das FrameLayout mit einem anderen single-Kind-LinearLayout, das sollte korrekt Messen. Ich würde entfernt haben das FrameLayout komplett und einfach Hinzugefügt summiert Rand mit Polsterung auf der inneren layout:
Ich würde loswerden der
FrameLayout
und machen dieLinearLayout
Kind derScrollView
mitmatch_parent
festlegen, wie das layout der Höhe. Wenn das immer noch nicht funktioniert, prüfen, ersetzen Sie den unteren Rand einer beliebigenView
mit der gewünschten Höhe und hintergrund, wie das Letzte Element in derLinearLayout
.