10

How can I set the max width of my horizontal LinearLayout? So if the contents are short (say, some text), the layout shrinks and if the contents are longer, it will not expand more than some max width value.

I prefer doing this at the XML level.

jscs
  • 63,694
  • 13
  • 151
  • 195
Asahi
  • 13,378
  • 12
  • 67
  • 87
  • see my answer [here](http://stackoverflow.com/a/8619442/236743) for another approach using a ViewGroup subclass – Dori Dec 23 '11 at 18:35

2 Answers2

8

This does it - what I needed beyond what was suggested in prior answer is to add another layout (@+id/TheLayout) as a wrapper between the content and the top layout:

<?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>
Community
  • 1
  • 1
Asahi
  • 13,378
  • 12
  • 67
  • 87
1
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int widthMaxSpec = MeasureSpec.makeMeasureSpec(270 /*pixels*/, MeasureSpec.AT_MOST);
    super.onMeasure(widthMaxSpec, heightMeasureSpec);
}
Bill
  • 19
  • 3