LinearLayout不在ScrollView内部扩展

我有一个在android:layout_height="fill_parent"ScrollView里面有一个LinearLayout ,但是它不会展开到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的全部高度,因为在Android Layout Editor Eclipse中,如果selectScrollView (在“大纲”面板中),它将以红色边框突出显示,并将屏幕填充到底部,但当我selectLinearLayout其高亮不会展开到屏幕的底部。 我怎样才能做到这一点?

我试图实现的效果是有一些文本和下面的button(在4级的LinearLayout只有一个button)。 文本可以足够大,需要一个滚动条,在这种情况下,我希望用户不得不向下滚动才能看到button。 如果文本不够大的滚动条,我希望包含button的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> 

目前,我对有问题的LinearLayout使用了android:layout_gravity="bottom" ,这使得button无论如何都会粘在屏幕的底部。 但是,这也使文本坚持到屏幕的底部,这是不是我所追求的。

更新:从头开始, android:layout_gravity="bottom"使ScrollView无法滚动。 其他想法?

最后自己find解决scheme。 问题不在于LinearLayout ,而在于ScrollView (看起来很奇怪,考虑到ScrollView 正在扩展,而LinearLayout则没有)。

解决scheme是在ScrollView上使用android:fillViewport="true"

我知道这个post是非常古老的,对于那些不想使用android:fillViewport="true"因为它有时不会显示键盘上方的edittext。 使用相对布局而不是LinearLayout来解决这个问题。

你能提供你的布局xml吗? 这样做可以让人们以最小的努力重现问题。

您可能需要设置

 android:layout_weight="1" 

为您想扩展的项目

我已经dynamic地使用这个。 我有一个LinearLayout和在这个使用ScrollView作为一个孩子。 然后,我再次采用LinearLayout并添加什么视图你想要这个LinearLayout,然后这个LinearLayout添加到ScrollView,并最终将此ScrollView添加到LinearLayout。 然后你可以滚动你的ScrollView,没有任何东西可以看到。

LinearLayout(Parent) – ScrollView(LinerLayout的子类) – LinearLayout(ScrollView的子类) – 在这里添加textView,Buttons,Spinner等任何你想要的。 然后将此LinearLyout添加到ScrollView。 Bcoz只有一个适用于ScrollView的CHILD,最后将这个ScrollView添加到LinearLyout。如果定义的区域超出屏幕大小,那么您将在ScrollView中获得一个滚动。

在我的情况下,我没有给予

LinearLayout的方向(ScrollView的孩子)

所以默认情况下,它需要水平的,但scrollview scrols垂直,所以请检查'android:orientation =“vertical”'设置为您的ScrollView的子(在LinearLayout的情况下)。

这是我的情况,希望它有助于某人