2011-02-09 1 views
4

c'est juste une question simple:layout_height toujours le contenu de l'emballage

J'ai un fichier de mise en page qui est présenté comme un élément dans un ListView. J'ai réglé la hauteur du RelativeLayout à 100dp, mais ça ne marche pas, ça enveloppe toujours le contenu, quelle que soit la disposition que j'utilise. Que puis-je faire pour définir une valeur fixe sur la hauteur de la mise en page sans l'encapsuler?

Merci pour l'aide.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="fill_parent" 
      android:layout_height="100dp"> <!-- this attribute seems to be ignored --> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="horizontal" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerHorizontal="true"> 

     <ProgressBar xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="@dimen/progressbar_small" 
       android:layout_height="@dimen/progressbar_small" 
       android:layout_gravity="center_vertical" /> 

     <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="5dp" 
       android:text="@string/loading" 
       android:layout_gravity="center_vertical" 
       style="@style/ListItemSubtext" /> 

    </LinearLayout> 
</RelativeLayout> 
+0

Essayez d'ajouter un fond à la RelativeLayout juste pour que vous pouvez être sûr qu'elle enveloppe en fait, essayez aussi d'augmenter votre hauteur dire 200dips pour voir ce qui se passe. – sgarman

+0

Un bon outil pour le débogage des mises en page est la visionneuse heirarchy, dans le dossier tools. Cela pourrait vous aider à voir ce qui motive quoi. –

+0

Faria En outre, quel est votre comportement souhaité? Peut-être que vous devriez tout mettre dans une vue de défilement avec la hauteur 100? Je ne suis pas vraiment sûr pourquoi vous voudriez une mise en page avec une partie du cutoff. –

Répondre

4

Je pense que dans une vue de liste tous les éléments sont de la même hauteur. Dans votre cas, vous pouvez ajouter la barre de progression dans la vue de pied de liste. Ajoutez un ajusteur de hauteur factice juste avant ou après ListItemSubtext. Essayez d'utiliser TableLayout au lieu de la disposition relative et linéaire.

Un faux réglage est comme ceci.

<View android:layout_width="wrap_content" android:layout_height="100dip"/> 

Veuillez noter que vous n'avez pas besoin de xmlns dans chaque élément.

0

Essayez d'utiliser 100px. Travaille pour moi.

+0

Merci pour votre réponse, mais cela ne fonctionne toujours pas pour moi. –

+1

Essayez d'appliquer la même restriction de hauteur à toutes les vues imbriquées. En outre, il s'agit d'une tangente, mais vous n'avez pas besoin de LinearLayout dans le fichier XML que vous affichez. – AedonEtLIRA

+0

Vous ne devriez jamais utiliser les valeurs px. Cela provoquera un mauvais comportement sur les téléphones de différentes tailles. Voir http://developer.android.com/guide/practices/screens_support.html –

0

je fais ci-dessous les changements dans votre xml ..

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="100dp"> <!-- this attribute taking a fixed value as u said --> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_centerHorizontal="true" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="horizontal"> 

    <ProgressBar xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_gravity="center_vertical" 
      android:layout_width="20dip" 
      android:layout_height="20dip"/> 

    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="5dp" 
      android:text="@string/loading" 
      android:layout_gravity="center_vertical" 
      style="@style/ListItemSubtext" /> 

</LinearLayout> 

Si cela ne fonctionne pas pour vous, dites ce que vous voulez faire exactement.

+0

Merci, debarati. Vérifiez les captures d'écran ci-dessous. Le premier montre une liste avec un élément de "chargement" à la fin. Le code XML que j'ai posté correspond au code XML de cet élément de chargement. La deuxième capture d'écran montre ce qui se passe quand je change le XML comme vous l'avez suggéré. Ce n'est pas ce que je veux. Ce que je veux, c'est augmenter la hauteur de l'élément de la liste sans augmenter la taille de la barre de texte ou de la barre de progression. Je pensais que la seule façon de faire cela serait d'augmenter la hauteur du groupe de vue externe.Si je change de 100dp à 500 ou 1000dp ou n'importe quelle valeur plus élevée, l'article de liste garde avec la même taille. –

6

comme cela:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:minHeight="100dip"> 
+0

merci beaucoup pour commenter, ça aide pour moi –

+0

celui-ci a effectivement fait l'affaire pour moi – Luke47

+0

cela fonctionne, mais pourquoi est-il nécessaire? –

Questions connexes