LinearLayout не расширяется внутри ScrollView

? Felix @ | Original: StackOverFlow

У меня естьLinearLayout внутриScrollView, который имеет android:layout_height="fill_parent", но это не расширяться на всю высотуScrollView . Моя схема выглядит примерно так :

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

Я вижу, чтоLinearLayout не расширяется на всю высотуScrollView, потому что в затмение в Android Layout Editor, если я выбираюScrollView ( в схеме панели) она выделяется красной рамкой, которая заполняет экран на дно, но когда я выбираюLinearLayout его изюминкой не расширяется в нижней части экрана . Как я могу заставить его сделать это?

Эффект, который я пытаюсь добиться, чтобы иметь некоторый текст и кнопку под ним (внутри LinearLayout уровня 4 есть только кнопка) . Текст может быть достаточно большой, чтобы нужно прокрутки, в этом случае я хочупользователю придется прокрутить вниз, чтобы увидеть кнопку . В случае, еслитекст не является достаточно большим для прокрутки, я хочуLinearLayout, содержащийкнопку, чтобы придерживаться нижней части экрана .

Сначала я думал, что я не должен размещать полный XML, потому что это, как правило,отложным, чтобы увидеть огромный кусок кода в вопросе . Тем не менее, кажется, что это может быть необходимо, так вотполную компоновку .

<?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>

На данный момент я прибегают к android:layout_gravity="bottom" напроблематично LinearLayout, который не делает кнопку палку в нижней части экрана ни на что. Но это также делает текст палку в нижней части экрана, которая не то, что я был после .

Обновление: царапины, что android:layout_gravity="bottom" делает ScrollView не удалось, ну свиток. Другие идеи ?

Top 5 ответ

1snctln @

Можете ли вы представить ваш макет XML? Это позволит людям, чтобы воссоздать проблему с минимальными усилиями.

Вы, возможно, придется установить

android:layout_weight="1"

для элемента, который вы хотите расширенной

2Felix @

Найдено решение сам, в конце концов . Проблема была неLinearLayout, но сScrollView ( кажется странным, учитывая тот факт, чтоScrollView был расширяется, в то время какLinearLayout не было).

Было принято решение использовать android:fillViewport="true" наScrollView .

3Braj @

Я динамически использовать, чтобы получить это . У меня есть LinearLayout и в этот используется Scrollview, как ребенок. Тогда я снова взять LinearLayout и добавить то, что когда-нибудь Просмотр и хотят, чтобы этот LinearLayout и тогда это LinearLayout добавить в ScrollView и, наконец, добавить этот Scrollview в LinearLayout . Тогда и можно получить прокрутку в ур Scrollview и ничего не будет слева видны.

LinearLayout ( Parent) - ScrollView ( ребенок LinerLayout ) - LinearLayout ( ребенок ScrollView ) - добавьте сюда TextView, кнопки, счетчик и т.д. Whatever U хотите. Затем добавьте этот LinearLyout в ScrollView . Bcoz только один ребенок на Scrollview действующим и последний добавить это ScrollView в LinearLyout.If определенной области является более от размера экрана, то и получите Свиток в ScrollView .

4Vishal_Pandey @

В моем случае я не дали

ориентация LinearLayout ( Scrollview Дитя )

Так, по умолчанию он принимает горизонтальное, но Scrollview scrols вертикально, поэтому, пожалуйста, проверьте, если " Android : ориентация = " вертикали " " установлен в вашей Scrollview своего ребенка (в случае LinearLayout ) .

Это был мой случай надеется, что поможет кто

.