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?
android:weight
.