Schwierigkeiten mit ScrollView und LinearLayout
Ich versuche, mich ein Android-layout: 3-Komponenten innerhalb einer vertikalen LinearLayout. Der center-Komponente wird ein ScrollView
enthält eine TextView
. Wenn die TextView
enthält eine beträchtliche Menge an text (mehr als auf den Bildschirm passen), die ScrollView
wächst den ganzen Weg um den unteren Rand des Bildschirms, zeigt Scrollbalken, und schiebt die Letzte Komponente, ein LinearLayout
mit einem Button
innen, die aus dem Bildschirm.
Wenn der text innerhalb der TextView
innerhalb der ScrollView
kurz genug ist, den Knopf an der Unterseite des Bildschirms positioniert ist, perfekt.
Das layout, das ich versuche zu erreichen ist:
Die XML-Datei für das layout, das ich geschrieben habe, ist:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:layout_marginLeft="10dip"
android:layout_marginRight="10dip"
android:layout_marginTop="10dip"
android:layout_marginBottom="10dip"
android:text="Title />
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:textColor="#FFFFFF"
android:background="#444444"
android:padding="10dip" />
</ScrollView>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<LinearLayout
android:orientation="horizontal"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button android:id="@+id/login_button"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_weight="1"
android:text="@string/next_button"/>
</LinearLayout>
</LinearLayout>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den scrollview ist die zweite view-Objekt ist und wrap_content, das ist mehr als der Bildschirm.
Empfehle ich ein RelativeLayout. Top textview erste mit
android:alignParentTop="true"
, die unten LinearLayout weiter mitandroid:alignParentBottom="true"
und der scrollview zuletzt aufgeführt in der xml mit dem Wertandroid:alignBelow="@id/whatYouCallTheHeader
.Diese Ausrichtung der unteren Leiste am unteren Rand des Bildschirms, und der Kopf an der Spitze, unabhängig von der Größe. Dann die scrollview wird seinen eigenen Platz, nachdem die Kopf-und Fußzeile platziert.
sollten Sie gehen für relativeLayout eher als LinearLayout. Und Sie können einige Eigenschaften wie alignBelow und alle.
Versuchen Sie, ein layout Gewicht in der
ScrollView
ie.Dieser arbeitete für mich in einer situation fast identisch zu dem, was Sie präsentieren, sondern ließ mich Fragen, warum, denn es ist Kontra-intuitiv, dass die Erhöhung der layout-Gewichts eine Kontrolle von 0 (der Standardwert, wenn Sie nicht angeben, eine
layout_weight
) zu 1 sollte eine Steuerung, die bereits über zu viel Platz, kleiner.Ich vermute, der Grund, warum es funktioniert ist, dass durch die nicht Angabe einer layout_weight Sie können sogar das layout zu ignorieren, die Größe des scroll-view in relation zu den anderen steuert und Umgekehrt, wenn Sie angeben, Sie es die Erlaubnis geben, es zu verkleinern, im Verhältnis zu den gewichten, die Sie zuweisen.
![Fixed Header-Footer und scrollbaren Körper layout ][1]
Dies ist, was Sie suchen . Die meisten der app in den android hatte diese Art von layout ,
eine Feste Kopf-und Fußzeile und einem scrollbaren Körper . Der xml-Code für dieses layout ist