Ich habe ein LinearLayout
Inneres ScrollView
, das hat android:layout_height="fill_parent"
, aber es dehnt sich nicht auf die volle Höhe des aus ScrollView
. Mein Layout sieht ungefähr so aus:
level layout layout_width layout_height
1 LinearLayout fill_parent fill_parent
2 LinearLayout fill_parent wrap_content
3 (some irrelevant stuff)
2 ScrollView fill_parent fill_parent <-- this expands full height
3 LinearLayout fill_parent fill_parent <-- this does not (has orientation=vertical)
(following stuff probably are irrelevant, but just to be sure:)
4 TextView fill_parent fill_parent
4 LinearLayout fill_parent wrap_content
Ich kann sehen, dass das LinearLayout
nicht die volle Höhe des vergrößert, ScrollView
da in Eclipse in Android Layout Editor
, wenn ich das ScrollView
(im Gliederungsbedienfeld) auswähle, es mit einem roten Rand hervorgehoben wird, der den Bildschirm bis zum unteren Rand ausfüllt, aber wenn ich das LinearLayout
Hervorheben auswähle wird nicht bis zum unteren Bildschirmrand erweitert. Wie kann ich das dazu bringen?
Der Effekt, den ich erreichen möchte, besteht darin, Text und eine Schaltfläche darunter zu haben ( LinearLayout
in Stufe 4 befindet sich nur eine Schaltfläche). Der Text kann groß genug sein, um eine Bildlaufleiste zu benötigen. In diesem Fall muss der Benutzer nach unten scrollen, um die Schaltfläche zu sehen. Falls der Text nicht groß genug für eine Bildlaufleiste ist, soll LinearLayout
die Schaltfläche mit dem unteren Rand des Bildschirms angezeigt werden.
Zuerst dachte ich, ich sollte nicht das vollständige XML veröffentlichen, da es normalerweise eine Ablehnung ist, einen riesigen Codeabschnitt in einer Frage zu sehen. Es scheint jedoch notwendig zu sein, daher hier das vollständige Layout.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/video_layout"
android:focusable="true"
style="@style/VideoLayout">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foreground="@android:drawable/ic_media_play"
android:foregroundGravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/video_thumb"
android:padding="5dip"
android:background="#454545"/>
</FrameLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true"
style="@style/VideoTitle"
android:id="@+id/video_title"
android:layout_gravity="center"
android:layout_weight="1"/>
</LinearLayout>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<!-- this ScrollView expands the full height of the screen.
However, the next LinearLayout does not expand the full height of the ScrollView -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:layout_gravity="fill"
android:orientation="vertical"
android:id="@+id/info_layout">
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/info_body"
style="@style/InfoText"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
style="@android:style/ButtonBar">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:text="@string/button_readmore"
android:id="@+id/btn_read_more"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
Im Moment habe ich android:layout_gravity="bottom"
auf das Problem zurückgegriffen LinearLayout
, bei dem der Knopf am unteren Bildschirmrand haftet, egal was passiert. Aber das bringt den Text auch dazu, am unteren Rand des Bildschirms zu bleiben, was nicht genau das ist, wonach ich gesucht habe.
Update: Scratch das, android:layout_gravity="bottom"
macht die ScrollView
nicht in der Lage, gut zu scrollen. Andere Ideen?
quelle
android:weight
.Ich weiß, dass dieser Beitrag sehr alt ist. Für diejenigen, die ihn nicht verwenden möchten,
android:fillViewport="true"
weil er manchmal den Edittext über der Tastatur nicht aufruft. Verwenden Sie das relative Layout anstelle von LinearLayout, um den Zweck zu lösen.quelle
Können Sie Ihr Layout-XML bereitstellen? Auf diese Weise können Benutzer das Problem mit minimalem Aufwand neu erstellen.
Möglicherweise müssen Sie einstellen
für das Element, das Sie erweitern möchten
quelle
Die Lösung ist zu verwenden
android:fillViewport="true"
in der Bildlaufansicht und versuchen Sie außerdem zu verwenden
"wrap_content"
statt"fill_parent"
als"fill_parent"
ist jetzt veraltet.
quelle
Ich habe es dynamisch verwendet, um dies zu bekommen. Ich habe ein LinearLayout und habe darin ScrollView als Kind verwendet. Dann nehme ich wieder LinearLayout und füge diesem LinearLayout die gewünschte Ansicht hinzu. Dann füge ich dieses LinearLayout zu ScrollView hinzu und füge diese ScrollView schließlich zu LinearLayout hinzu. Dann können Sie in ur ScrollView scrollen und nichts bleibt sichtbar.
LinearLayout (übergeordnet) - ScrollView (untergeordnetes Element von LinerLayout) - LinearLayout (untergeordnetes Element von ScrollView) - fügen Sie hier Textansicht, Schaltflächen, Drehfeld usw. hinzu, was immer Sie möchten. Fügen Sie dann dieses LinearLyout zu ScrollView hinzu. Bcoz nur ein KIND für ScrollView anwendbar und zuletzt diese ScrollView zu LinearLyout hinzufügen. Wenn der definierte Bereich von der Bildschirmgröße überschritten wird, erhalten Sie einen Scroll in ScrollView.
quelle
In meinem Fall habe ich das nicht gegeben
Standardmäßig wird also horizontal gearbeitet, aber die Bildlaufansicht wird vertikal gescrollt. Überprüfen Sie daher, ob "android: Orientierung =" vertikal "" auf das untergeordnete Element Ihrer ScrollView eingestellt ist (im Fall von LinearLayout).
.
quelle