Перегляд всередині ScrollView займає не все місце


144

У мене є відносний макет всередині ScrollView. Мій RelativeLayout має, android:layout_height="match_parent"але вигляд не приймає весь розмір, він схожий на wrap_content.

Чи існує спосіб реальної поведінки заповнити / вибіг / 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
Те саме стосується HorizontalScrollView.
CoolMind

Врятував мій день, перегляд прокрутки відстій без цього: p
Qasim

Працював як шарм! Дякую. Ти врятував мені день.
Анас Азеем

Якщо це не працює для вас, не забудьте встановити атрибут ScrollView, а не дитину!
Енселік

Дякую за чудову відповідь. Врятуй і мій день
дуді

8

Просто додайте андроїд: fillViewport = "true" у вашому форматі XML у Scrollview

<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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.