Question

I have a LinearLayout and I controlled the height of this layout using getLayoutParams previously and it was working beautifully. Now I want the layout to be scrollable so I placed it under a ScrollView. Now for some reason the getLayoutParams stopped working. I seem to have come to a dead end trying to resolve this. Please help.

Here is my code

            if(subHistories.getLayoutParams().height==0)
                (subHistories.getLayoutParams()).height=ViewGroup.LayoutParams.WRAP_CONTENT;
            else
                (subHistories.getLayoutParams()).height=0;

Here subHistories is the layout object I want to control the height for. I want it to switch it's height from zero to wrap_content on every onClick event

And here is the relevant xml code:

...<ScrollView
    android:id="@+id/left"
    android:layout_width="200dp"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:layout_below="@id/head"
    android:animateLayoutChanges="true">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
        <TextView
            android:id="@+id/historyBut"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:background="#5261a5"
            android:paddingBottom="5dp"
            android:paddingLeft="5dp"
            android:paddingRight="5dp"
            android:paddingTop="5dp"
            android:text="Historical Places"
            android:textAllCaps="false"
            android:textSize="20sp"
            android:typeface="normal" />

        <!-- historical places category -->
        <LinearLayout
            android:id="@+id/histories"
            android:layout_marginLeft="10dp"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:orientation="vertical"
            android:animateLayoutChanges="true" >...
Was it helpful?

Solution

After touching layout params, call requestLayout() for the changes to take effect.

For hiding/showing a layout, consider using setVisibility() with GONE and VISIBLE instead.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top