У меня есть 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
не мог, ну, в общем, прокрутить. Другие идеи?
В конце концов, я сам нашел решение. Проблема заключалась не в LinearLayout
, а в ScrollView
(кажется странным, учитывая тот факт, что ScrollView
расширялся, а ] LinearLayout
не было).
Решением было использовать android: fillViewport = "true"
в ScrollView
.
Вы можете предоставить свой XML-макет? Это позволит людям воссоздать проблему с минимальными усилиями.
Возможно, вам придется установить
android:layout_weight="1"
для элемента, который вы хотите развернуть