2010-11-10 24 views
1

J'ai une disposition de défilement avec une disposition relative dans chaque ligne. Maintenant, il y a une image et un texte, et je veux limiter la hauteur de chaque ligne au texte. Donc, si mon image est plus haute que le texte, que l'image sera redimensionnée à la hauteur du texte (proportionnelle). Comment puis-je faire cela en XML?Limiter la hauteur d'une vue à la hauteur de la vue parent

Au moment de la définition de la ligne ressemble (copié à partir de la mise en œuvre android Mumble):

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout01" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent"> 

    <ImageView 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:id="@+id/userRowState" 
     android:src="@drawable/icon" /> 
    <TextView 
     android:layout_toLeftOf="@+id/userRowStatus" 
     android:layout_height="wrap_content" 
     android:text="[Name]" 
     android:id="@+id/userRowName" 
     android:ellipsize="end" 
     android:layout_width="wrap_content" 
     android:lines="1" 
     android:singleLine="true" 
     android:textSize="25sp" 
     android:layout_centerVertical="true" 
     android:layout_toRightOf="@+id/userRowState" /> 
    <!-- 
     singleLine is deprecated but it is the only way to get ellipsize work 
     it seems. 'inputType text, maxLines 1' didn't work. It's a known issue 
     that Google has been unable to reproduce in 1½ years 
     http://code.google.com/p/android/issues/detail?id=882 Will see what 
     happens first, they remove support for singleLine or they manage to 
     reproduce the error. :p 
    --> 
</RelativeLayout> 

Sincèrement xZise

+0

C'est une bonne question. Offhand, je ne peux pas penser à une façon que vous pourriez faire cela dans une mise en page XML, bien qu'il semble que ce serait assez facile à faire par programmation. Je me demande si vous pourriez juste utiliser un ViewStub au lieu de l'ImageView, puis dans votre méthode onCreate, gonflez-les simplement au besoin, en passant la hauteur du TextView en tant que LayoutParams pour l'ImageView? De là, vous pouvez simplement ajuster votre scaleType de votre ImageView au besoin. – kcoppock

+0

Je ne pense pas que vous pouvez le faire de cette façon. Pourquoi ne définissez-vous pas layout_height de l'élément parent dans votre cas la disposition relative et utilisez fill_parent dans vos éléments enfants. –

Répondre

0

Vous pouvez essayer d'aligner le haut et le bas de l'icône en haut et en bas de l'userRowName:

<ImageView 
    android:id="@+id/userRowState" 
    android:src="@drawable/icon" 
    android:layout_width="wrap_content" 
    android:layout_alignTop="@+id/userRowName" 
    android:layout_alignBottom="@+id/userRowName"/> 

Cela devrait le faire diminuer en taille lorsque le texte diminue. Il restera cependant centré horizontalement sur son ancienne position et il ne grossira pas car il est limité dans la direction horizontale.