我有一个LinearLayout内部 a ScrollView,android:layout_height="fill_parent"但它没有扩展到ScrollView. 我的布局看起来像:
LinearLayout
ScrollView
android:layout_height="fill_parent"
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它的突出显示时不会扩展到屏幕底部。我怎样才能让它这样做?
Android Layout Editor
我想要达到的效果是在它下面有一些文本和一个按钮(在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"
更新: 从头开始,android:layout_gravity="bottom"使ScrollView无法滚动。其他想法?
最后自己找到了解决方案。问题不在于LinearLayout,而在于ScrollView(看起来很奇怪,考虑到ScrollView 正在 扩展,而LinearLayout没有)。
解决方案是android:fillViewport="true"在ScrollView.
android:fillViewport="true"