Tôi có một LinearLayout
bên trong ScrollView
có android:layout_height="fill_parent"
, nhưng nó không mở rộng đến chiều cao đầy đủ của ScrollView
. Bố cục của tôi trông giống như:
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
Tôi có thể thấy rằng LinearLayout
không mở rộng toàn bộ chiều cao của ScrollView
vì trong Eclipse Android Layout Editor
, nếu tôi chọn ScrollView
(trong bảng Outline), nó được tô sáng bằng viền đỏ lấp đầy màn hình xuống phía dưới nhưng khi tôi chọn điểm sáng LinearLayout
của nó không mở rộng xuống phía dưới màn hình. Làm thế nào tôi có thể làm cho nó để làm như vậy?
Hiệu ứng tôi đang cố gắng đạt được là có một số văn bản và một nút bên dưới nó (bên LinearLayout
trong cấp 4 chỉ có một nút). Văn bản có thể đủ lớn để cần một thanh cuộn, trong trường hợp đó tôi muốn người dùng phải cuộn xuống để xem nút. Trong trường hợp văn bản không đủ lớn cho thanh cuộn, tôi muốn nút LinearLayout
chứa nút ở dưới cùng của màn hình.
Lúc đầu, tôi nghĩ rằng tôi không nên đăng toàn bộ XML vì thường là một lượt xuống để xem một đoạn mã lớn trong một câu hỏi. Tuy nhiên, có vẻ như nó là cần thiết, vì vậy đây là cách bố trí đầy đủ.
<?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>
Tại thời điểm tôi đã sử dụng đến android:layout_gravity="bottom"
vấn đề LinearLayout
, điều này làm cho nút dính vào dưới cùng của màn hình không có vấn đề gì. Nhưng điều đó cũng làm cho văn bản dính vào dưới cùng của màn hình, đó không phải là chính xác những gì tôi đã sau.
Cập nhật: cào đó, android:layout_gravity="bottom"
làm cho ScrollView
không thể, tốt, cuộn. Những ý tưởng khác?
android:weight
.