2010-09-13 6 views
7

Comment puis-je définir la largeur maximale de mon horizontale LinearLayout? Donc, si le contenu est court (disons, du texte), la mise en page rétrécit et si le contenu est plus long, il ne s'étendra pas plus que la valeur de largeur maximale.Définition d'une largeur maximale pour LinearLayout

Je préfère faire cela au niveau XML.

+0

voir ma réponse [ici] (http://stackoverflow.com/a/8619442/236743) pour une autre approche utilisant une sous-classe ViewGroup – Dori

Répondre

7

Cela le fait - ce que je devais beyond what was suggested in prior answer est d'ajouter une autre mise en page (@+id/TheLayout) comme enveloppe entre le contenu et la mise en page en haut:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:paddingLeft="100dip" 
android:paddingRight="100dip"> 
<LinearLayout android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/TheLayout" 
    android:layout_gravity="right"> 
    <TextView android:id="@+id/TextView01" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:layout_weight="1" 
     android:text="this is my text." 
     android:layout_gravity="center_vertical"> 
    </TextView> 
    <ImageView android:id="@+id/ImageView01" 
     android:layout_height="wrap_content" 
     android:background="@drawable/icon" 
     android:layout_width="fill_parent"> 
    </ImageView> 
</LinearLayout> 
</LinearLayout> 
+0

Nice! Travailler comme un charme. –

0
@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    int widthMaxSpec = MeasureSpec.makeMeasureSpec(270 /*pixels*/, MeasureSpec.AT_MOST); 
    super.onMeasure(widthMaxSpec, heightMeasureSpec); 
} 
+0

bienvenue à SO, vous préférez expliquer pourquoi votre code va résoudre son problème, merci. –

Questions connexes