2010-12-15 9 views
2

J'ai un ScrollView/RelativeLayout/FrameLayout et j'ai mis à l'intérieur programmaticaly quelques widgets.ScrollView ne défile pas?

Voici le xml IUG:

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:fillViewport="true" 
android:background="@drawable/fond_app"> 
    <RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    > 
    <TextView 
    android:id="@+id/titreAppli" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="My Big Application" 
    android:textStyle="bold" 
    android:textColor="#9b9b71" 
    android:textSize="15dp" 
    /> 
    <FrameLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/out" 
    android:layout_below="@id/titreAppli" 
    /> 
    </RelativeLayout> 
</ScrollView> 

Dans le FrameLayout, je mets une autre programaticaly RelativeLayout, et d'autres widgets à l'intérieur.

Avec certains widgets (texte, image, boutons), je ne peux pas faire défiler. Avec d'autres (une liste linéaire avec du texte), je peux faire défiler.

Pourquoi? Y a-t-il une solution?

Merci.

+0

peut-être un stupide (je programme principalement dans opengl sur android) question mais est-ce assez pour faire défiler? (Je veux dire est votre vue intérieure assez grand pour avoir besoin de défilement) –

+0

Oui, je pense, parce que je vois quelques widgets au-delà du en bas de la fenêtre. – Istao

Répondre

3

Avez-vous essayé sans le android:fillViewport="true"?

+0

C'est du travail! Planty de beaucoup de mercis! Mais pourquoi ? – Istao

+0

Oui, cela peut ne pas sembler évident même après avoir lu la documentation originale - http://developer.android.com/intl/zh-CN/reference/android/widget/ScrollView.html#setFillViewport%28boolean%29. –

+0

Je n'ai pas utilisé LinearLayout à l'intérieur de scrollview (pour certaines raisons j'ai donc utilisé une classe d'extension de ViewGroup) et je ne peux pas non plus faire défiler, pourquoi? –

4

Supprimez d'abord la disposition du cadre. Vous devriez utiliser une autre disposition comme relative au lieu de framelayout. Becasue Framelayout n'est pas en expansion et il n'y a pas d'affichage défilant. Si vous utilisez linéaire ou relatif, ils vont se développer et vous serez en mesure de faire défiler.

+0

Merci. Malheureusement, ça ne marche pas pour moi: Si je remplace FrameLayout par RelativeLayout, je vois la même chose: pas de défilement sur une vue qui dépasse de la fenêtre. – Istao

Questions connexes