У меня есть 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
потому что в Eclipse in 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
невозможным, ну, прокручивать. Другие идеи?
источник
android:weight
.Я знаю, что этот пост очень старый, для тех, кто не хочет его использовать,
android:fillViewport="true"
потому что иногда он не отображает текст редактирования над клавиатурой. Используйте Относительное расположение вместо LinearLayout, это решает цель.источник
Можете ли вы предоставить свой макет XML? Это позволит людям воссоздать проблему с минимальными усилиями.
Возможно, вам придется установить
для элемента, который вы хотите расширить
источник
Решение заключается в использовании
android:fillViewport="true"
на просмотр прокрутки и более того, попробуйте использовать
"wrap_content"
а не"fill_parent"
как"fill_parent"
устарела сейчас.
источник
Я динамически использовал, чтобы получить это. У меня есть LinearLayout и в этом используется ScrollView, как ребенок. Затем я снова беру LinearLayout и добавляю все, что вы хотите, к этому LinearLayout, а затем это LinearLayout добавляете в ScrollView и, наконец, добавляете этот ScrollView к LinearLayout. Тогда вы можете получить прокрутку в вашем ScrollView и ничего не останется видимым.
LinearLayout (Parent) - ScrollView (дочерний элемент LinerLayout) - LinearLayout (дочерний элемент ScrollView) - добавьте сюда textView, Buttons, spinner и т. Д. Все, что вы хотите. Затем добавьте этот LinearLyout в ScrollView. Bcoz применим только один РЕБЕНОК для ScrollView и в последний раз добавьте этот ScrollView в LinearLyout. Если определенная область превышает размер экрана, то вы получите Scroll в ScrollView.
источник
В моем случае я не дал
Поэтому по умолчанию это занимает горизонтальное положение, но прокрутка прокручивается по вертикали, поэтому, пожалуйста, проверьте, установлен ли параметр 'android: ориентация = "вертикальный" для дочернего элемента ScrollView (в случае LinearLayout).
,
источник