ScrollView内のビューがすべての場所に表示されるわけではありません


144

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_width="fill_parent"
android:layout_height="fill_parent">

    <ImageView
    android:id="@+id/top"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:scaleType="fitXY"
    android:src="@drawable/top" />

    <ImageView
    android:id="@+id/header"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/top"
    android:scaleType="fitXY"
    android:src="@drawable/headerbig" />

    <ImageView
    android:id="@+id/logo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/header"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="3dp"
    android:src="@drawable/logo" />

    <ScrollView
    android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/bottom"
    android:layout_below="@+id/logo"
    android:background="@drawable/background" >

        <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

             <ImageView
            android:id="@+id/dashboard01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            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_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:layout_alignParentRight="true"
            android:layout_marginRight="10dp"
            android:src="@drawable/dashboard02" />

             <ImageView
            android:id="@+id/dashboard03"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            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_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/logo"
    android:layout_centerHorizontal="true"
    android:scaleType="fitXY"
    android:src="@drawable/bar" />

    <ImageView
    android:id="@+id/bottom"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:scaleType="fitXY"
    android:src="@drawable/bottom" />

</RelativeLayout>

回答:


461

android:fillViewport="true"ScrollViewに追加してみてください

これandroid:layout_height=”fill_parent”は「高さを親の高さに設定する」という意味です。これは明らかにを使用するときに必要なものではありませんScrollView。結局のところ、ScrollViewそのコンテンツが常にそれ自体と同じくらい高ければ、は役に立たなくなるでしょう。これを回避するには、というScrollView属性を使用する必要がありますandroid:fillViewport。この属性をtrueに設定すると、ScrollView必要に応じてスクロールビューの子がの高さに拡大されます。子がより大きい場合ScrollView、属性は効果がありません。

http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/


3
Horizo​​ntalScrollViewについても同様です。
CoolMind 2016

私の日を救った、scrollviewはこれなしでサック:p
Qasim

魅力のように働いた!ありがとう。あなたは私の日を救った。
Anas Azeem

うまくいかない場合は、子ではなくScrollViewに属性を設定してください。
Enselic

素晴らしい答えをありがとう。私の日も保存
dudi

8

Scrollviewのyout xmlレイアウトにandroid:fillViewport = "true"を追加するだけです

<ScrollView android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:background="@color/green"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fitsSystemWindows="true"
    android:fillViewport="true"
    >

<!--define views here-->


</ScrollView>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.