Linearlayout nicht in einem Scrollview erweitert

? Felix @ | Original: StackOverFlow
---

Ich habe einen LinearLayout innerhalb einer ScrollView, das android:layout_height="fill_parent", aber es muss nicht auf die volle Höhe des ScrollView zu erweitern. Meine 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 die LinearLayout nicht die volle Höhe der ScrollView, weil in Eclipse in Android Layout Editor, wenn ich das Kontrollkästchen ScrollView ( in der Gliederungsfeld) wird mit einem roten Rahmen markiert das erfüllt erweitern der Bildschirm nach unten, aber wenn ich wählen Sie LinearLayout seinen Höhepunkt nicht auf den unteren Rand des Bildschirms zu erweitern. Wie kann ich es zu tun ?

Der Effekt versuche ich zu erreichen, ist etwas Text und eine Button es ( in der LinearLayout in Level 4 gibt es nur eine Taste ) haben . Der Text kann groß genug, um eine Bildlaufleiste, in diesem Fall möchte ich es dem Benutzer, um die Taste zu sehen bis zu scrollen müssen. Wenn der Text ist nicht groß genug für eine Bildlaufleiste, möchte ich das auf den Button LinearLayout, die an den unteren Rand des Bildschirms zu halten.

Zuerst dachte ich, ich sollte die vollständige XML nicht erlaubt, weil es in der Regel ein Turn-Down, ein großes Stück Code in einer Frage zu sehen . Es scheint jedoch, kann es notwendig sein, so ist hier der 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 Zuflucht zu android:layout_gravity="bottom" auf die Problematik LinearLayout, die Sie auf die Schaltfläche -Stick an den unteren Rand des Bildschirms, egal was . Aber das macht auch den Text -Stick an den unteren Rand des Bildschirms, das nicht genau das, was ich nach ist .

Update: Kratzer, android:layout_gravity="bottom" macht die ScrollView nicht in der Lage, gut, blättern . Andere Ideen ?

---

Top 5 Antwort

1snctln @

Können Sie Ihr Layout xml ? Dies würde ermöglichen Menschen, um das Problem mit minimalem Aufwand neu zu erstellen.

Sie müssen möglicherweise eingestellt

android:layout_weight="1"

für das Element, das Sie erweitert werden sollen

2Felix @

Die Lösung fand ich mich am Ende. Das Problem war nicht mit dem LinearLayout, aber mit dem ScrollView ( scheint seltsam, wenn man bedenkt, dass die ScrollView wurde erweitert, während die LinearLayout war nicht ) .

Die Lösung war, auf der android:fillViewport="true" Verwendung ScrollView .

3Braj @

Ich habe dynamisch verwendet werden, um diese zu erhalten. Ich habe einen Linearlayout und innerhalb dieser verwendet Scroll als Kind. Dann nehmen i wieder Linearlayout und fügen Sie, was immer anzeigen u wollen dieses Linearlayout und dann diese Linearlayout zu Scroll hinzufügen und schließlich dieses Scroll zu Linearlayout hinzuzufügen. Dann kann u erhalten, blättern Sie in ur Scrollview und wird nichts sichtbar hinterlassen.

Linearlayout (Parent ) - Scroll ( Kind LinerLayout ) - Linearlayout ( Kind des Scrollview ) - hier hinzufügen Textview, Knöpfe, Spinner etc., was u wollen . Dann fügen Sie diese LinearLyout zu Scroll . Bcoz nur ein Kind für Scroll geltenden und zuletzt Fügen Sie diese Scroll zu LinearLyout.If definierten Bereich ist überschritten von Bildschirmgröße u dann wird ein Scroll in Scrollview zu bekommen.

4Vishal_Pandey @

In meinem Fall habe ich nicht angesichts der

Ausrichtung der Linearlayout ( Scroll Child )

So wird es standardmäßig erfolgt horizontal, sondern vertikal scroll scrols, so überprüfen Sie bitte, ob " Android: orientation = " vertikale " 'auf Ihrer Scroll Child eingestellt ( Bei der Linearlayout ) .

Das war mein Fall hofft es hilft jemand

.