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/

【讨论】:

Horizo​​ntalScrollView 也是如此。 拯救了我的一天,没有这个滚动视图很糟糕:p 工作就像一个魅力!谢谢。你拯救了我的一天。 如果它对你不起作用,请确保你在 ScrollView 上设置属性,而不是子级! 感谢您的出色回答。也拯救我的一天

以上是关于ScrollView 内的视图并没有占据所有位置的主要内容,如果未能解决你的问题,请参考以下文章

基维。 GridLayout 在 ScrollView 内的位置

Scrollview 内的 Scrollview 时水平滚动

滚动视图内的不可滚动的tableview

将视图动态添加到 ScrollView 内的 RelativeLayout

如何滚动到scrollview内recyclerview中的特定位置?

ViewPager中的视图在ScrollView中不能垂直滚动