ScrollView içinde görüntüleme her yerde yer almıyor


149

ScrollView içinde bir RelativeLayout var. Benim RelativeLayout'um var android:layout_height="match_parent"ama görünüm tüm boyutu almıyor, bu bir wrap_content gibi.

Gerçek fill_parent / match_parent davranışına sahip olmanın bir yolu var mı?

Düzenim:

<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>

Yanıtlar:


470

android:fillViewport="true"ScrollView'unuza eklemeyi deneyin

android:layout_height=”fill_parent”"yüksekliği ebeveynin yüksekliğine ayarla" anlamına geldiğini unutmayın . Açıkçası bu, a kullanırken istediğiniz şey değildir ScrollView. Sonuçta ScrollView, içeriği her zaman kendisi kadar uzun olsaydı, işe yaramaz hale gelirdi. Bu sorunu çözmek için, adlı ScrollView özelliğini kullanmanız gerekir android:fillViewport. True olarak ayarlandığında, bu özellik kaydırma görünümünün alt öğesinin ScrollViewgerekirse yüksekliğine kadar genişlemesine neden olur . Çocuk boyundan daha uzun olduğunda ScrollView, niteliğin hiçbir etkisi yoktur.

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


3
Aynısı HorizontalScrollView için de geçerlidir.
CoolMind

Günümü kurtardı, scrollview bu olmadan berbattı: p
Kasım

Büyü gibi çalıştı! Teşekkürler. Günümü kurtardın.
Anas Azeem

Sizin için işe yaramazsa, özniteliği çocukta değil ScrollView'da ayarladığınızdan emin olun!
Enselic

Harika cevap için teşekkürler.
Günümü

10

Scrollview'da yout xml düzenine android: fillViewport = "true" eklemeniz yeterlidir

<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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.