2010-05-11 10 views
1

Je ne parviens pas à rétrécir ma vue de layuot lorsque je l'utilise dans la disposition suivante, utilisée comme boîte de dialogue. Dans l'exemple ci-dessous la scrollview se développe toujours pour remplir toute la boîte de dialogue qui semble très laide s'il n'y a pas beaucoup de contenu réel.RelativeLayout ne rétrécit pas en hauteur

J'ai essayé la plupart des combinaisons de fill_parent, wrap_content etc sans succès.

Le problème semble être que le réglage du bouton sur "align_bottom" provoquera le remplissage du dialogue. Mais si je change l'ordre et que j'ai un bouton placé en dessous du scrollview le bouton ne sera pas visible si beaucoup de contenu est montré ...

Contournement (que je pense est une solution très moche) est de définir une marge -bas sur la scrollview et ensuite la même marge négative-top sur le bouton. Mais je ne suis pas sûr de savoir comment cela va regarder différents affichages.

S'il vous plaît aider/Rudas

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <ScrollView 
     android:id="@+id/ScrollView01" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/dialogCloseButton" 
     android:layout_alignParentTop="true" > 

     <LinearLayout 
      android:id="@+id/dialogContent" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:paddingBottom="10dp" > 

      <TextView 
       android:id="@+id/TextView01" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 
      </TextView> 
     </LinearLayout> 
    </ScrollView> 

    <Button 
     android:id="@+id/dialogCloseButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:text="Close" > 
    </Button> 

</RelativeLayout><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <ScrollView 
     android:id="@+id/ScrollView01" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/dialogCloseButton" 
     android:layout_alignParentTop="true" > 

     <LinearLayout 
      android:id="@+id/dialogContent" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:paddingBottom="10dp" > 

      <TextView 
       android:id="@+id/TextView01" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 
      </TextView> 
     </LinearLayout> 
    </ScrollView> 

    <Button 
     android:id="@+id/dialogCloseButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:text="Close" > 
    </Button> 

</RelativeLayout> 

Répondre

0

ScrollView est de type spécial FrameLayout. Cela signifie qu'il commencera toujours dans le coin supérieur gauche de la mise en page parente. L'effet chevauche les autres vues et les paramètres RelativeLayout n'auront aucun effet. La solution est de mettre StrollView dans une disposition séparée (par exemple LinearLayout).