ฉันมี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 Android Layout Editor
ถ้าฉันเลือกScrollView
(ในแผงโครงร่าง) มันจะถูกเน้นด้วยเส้นขอบสีแดงที่เติมหน้าจอลงไปด้านล่าง แต่เมื่อฉันเลือก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
แต่วิธีนี้อาจไม่จำเป็นต้องสะท้อนให้เห็นในรูปแบบของคุณจนกว่าจะมีการควบคุมที่กินพื้นที่เพิ่มเติมโดยใช้