Mam LinearLayout
wnętrze, ScrollView
które ma android:layout_height="fill_parent"
, ale nie rozszerza się do pełnej wysokości ScrollView
. Mój układ wygląda mniej więcej tak:
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
Widzę, że LinearLayout
nie rozszerza pełnej wysokości, ScrollView
ponieważ w Eclipse w Android Layout Editor
, jeśli wybiorę ScrollView
(w panelu Kontur), zostanie podświetlona czerwoną ramką, która wypełnia ekran do dołu, ale kiedy zaznaczę LinearLayout
jego podświetlenie nie rozwija się na dole ekranu. Jak mogę to zrobić?
Efekt, który próbuję osiągnąć, to mieć tekst i przycisk poniżej (wewnątrz LinearLayout
poziomu 4 jest tylko przycisk). Tekst może być wystarczająco duży, aby potrzebować paska przewijania, w takim przypadku chcę, aby użytkownik musiał przewinąć w dół, aby zobaczyć przycisk. W przypadku, gdy tekst nie jest wystarczająco duży, aby przewijać pasek przewijania, chcę LinearLayout
, aby przycisk zawierający znajdował się na dole ekranu.
Na początku myślałem, że nie powinienem publikować pełnego kodu XML, ponieważ zwykle jest to odrzucenie, aby zobaczyć dużą część kodu w pytaniu. Wydaje się jednak, że może to być konieczne, więc oto pełny układ.
<?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>
W tej chwili sięgnąłem android:layout_gravity="bottom"
po problem LinearLayout
, który sprawia, że przycisk przykleja się do dolnej części ekranu bez względu na wszystko. Ale to sprawia, że tekst przykleja się do dolnej części ekranu, co nie jest dokładnie tym, czego szukałem.
Aktualizacja: podrap to, co android:layout_gravity="bottom"
uniemożliwia ScrollView
przewijanie. Inne pomysły?
android:weight
.