LinearLayout, не расширяющийся в ScrollView

У меня есть a LinearLayout внутри a 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 потому что в Eclipse в Android Layout Editor, если я выбираю ScrollView (в панели Outline) это выделяется с красной границей, которая заполняет экран к нижней части, но когда я выбираю 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 не мог, ну, в общем, прокрутить. Другие идеи?

362
задан Felix 8 April 2010 в 22:53
поделиться

2 ответа

В конце концов, я сам нашел решение. Проблема заключалась не в LinearLayout , а в ScrollView (кажется странным, учитывая тот факт, что ScrollView расширялся, а ] LinearLayout не было).

Решением было использовать android: fillViewport = "true" в ScrollView .

944
ответ дан 23 November 2019 в 00:11
поделиться

Вы можете предоставить свой XML-макет? Это позволит людям воссоздать проблему с минимальными усилиями.

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

android:layout_weight="1"

для элемента, который вы хотите развернуть

8
ответ дан 23 November 2019 в 00:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: