ScrollView 内的视图并没有占据所有位置
Posted
技术标签:
【中文标题】ScrollView 内的视图并没有占据所有位置【英文标题】:View inside ScrollView doesn't take all place 【发布时间】:2012-04-29 23:30:32 【问题描述】:我在 ScrollView 中有一个 RelativeLayout。
我的 RelativeLayout 有 android:layout_height="match_parent"
但视图不会占用整个大小,它就像一个 wrap_content。
有没有办法实现真正的 fill_parent/match_parent 行为?
我的布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_>
<ImageView
android:id="@+id/top"
android:layout_
android:layout_
android:layout_alignParentTop="true"
android:scaleType="fitXY"
android:src="@drawable/top" />
<ImageView
android:id="@+id/header"
android:layout_
android:layout_
android:layout_below="@+id/top"
android:scaleType="fitXY"
android:src="@drawable/headerbig" />
<ImageView
android:id="@+id/logo"
android:layout_
android:layout_
android:layout_alignBottom="@+id/header"
android:layout_centerHorizontal="true"
android:layout_marginBottom="3dp"
android:src="@drawable/logo" />
<ScrollView
android:layout_
android:layout_
android:layout_above="@+id/bottom"
android:layout_below="@+id/logo"
android:background="@drawable/background" >
<RelativeLayout
android:layout_
android:layout_>
<ImageView
android:id="@+id/dashboard01"
android:layout_
android:layout_
android:layout_above="@+id/dashboard02"
android:layout_centerHorizontal="true"
android:layout_marginBottom="30dp"
android:src="@drawable/dashboard01"
android:visibility="visible" />
<ImageView
android:id="@+id/dashboard02"
android:layout_
android:layout_
android:layout_centerInParent="true"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp"
android:src="@drawable/dashboard02" />
<ImageView
android:id="@+id/dashboard03"
android:layout_
android:layout_
android:layout_below="@+id/dashboard02"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
android:src="@drawable/dashboard03"
android:visibility="visible" />
</RelativeLayout>
</ScrollView>
<ImageView
android:layout_
android:layout_
android:layout_below="@+id/logo"
android:layout_centerHorizontal="true"
android:scaleType="fitXY"
android:src="@drawable/bar" />
<ImageView
android:id="@+id/bottom"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:scaleType="fitXY"
android:src="@drawable/bottom" />
</RelativeLayout>
【问题讨论】:
【参考方案1】:只需在 Scrollview 的 xml 布局中添加 android:fillViewport="true"
<ScrollView android:layout_
android:layout_
android:background="@color/green"
xmlns:android="http://schemas.android.com/apk/res/android"
android:fitsSystemWindows="true"
android:fillViewport="true"
>
<!--define views here-->
</ScrollView>
【讨论】:
【参考方案2】:尝试将android:fillViewport="true"
添加到您的ScrollView
请记住,
android:layout_height=”fill_parent”
的意思是“将高度设置为父级的高度”。这显然不是您在使用ScrollView
时想要的。毕竟,如果ScrollView
的内容总是和它自己一样高,它就会变得毫无用处。要解决此问题,您需要使用名为android:fillViewport
的 ScrollView 属性。当设置为 true 时,如果需要,此属性会使滚动视图的子视图扩展到ScrollView
的高度。当child高于ScrollView
时,该属性无效。
http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/
【讨论】:
HorizontalScrollView 也是如此。 拯救了我的一天,没有这个滚动视图很糟糕:p 工作就像一个魅力!谢谢。你拯救了我的一天。 如果它对你不起作用,请确保你在 ScrollView 上设置属性,而不是子级! 感谢您的出色回答。也拯救我的一天以上是关于ScrollView 内的视图并没有占据所有位置的主要内容,如果未能解决你的问题,请参考以下文章
基维。 GridLayout 在 ScrollView 内的位置
Scrollview 内的 Scrollview 时水平滚动
将视图动态添加到 ScrollView 内的 RelativeLayout