Asahi
Asahi

Reputation: 13506

Setting a max width for LinearLayout

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.

Upvotes: 10

Views: 28760

Answers (2)

Bill
Bill

Reputation: 19

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

Upvotes: 1

Asahi
Asahi

Reputation: 13506

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>

Upvotes: 8

Related Questions