Setting a max width for LinearLayout

27,713

Solution 1

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>

Solution 2

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int widthMaxSpec = MeasureSpec.makeMeasureSpec(270 /*pixels*/, MeasureSpec.AT_MOST);
    super.onMeasure(widthMaxSpec, heightMeasureSpec);
}
Share:
27,713
Asahi
Author by

Asahi

Updated on March 15, 2020

Comments

  • Asahi
    Asahi about 4 years

    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.

  • Muhammed Refaat
    Muhammed Refaat about 8 years
    welcome to SO, you'd rather explain why your code will solve his problem, thanks.
  • Ready Android
    Ready Android about 7 years
    Nice! Working like a charm.