ScrollView下的LinearLayout的getLayoutParams不起作用

时间:2014-05-09 09:11:03

标签: android layoutparams

我有一个LinearLayout,我之前使用getLayoutParams控制了这个布局的高度,它工作得很漂亮。现在我希望布局可滚动,所以我将它放在ScrollView下。由于某种原因,getLayoutParams停止工作。试图解决这个问题似乎已经走到了尽头。请帮忙。

这是我的代码

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

这里subHistories是我想控制高度的布局对象。我希望它在每个onClick事件上将它的高度从零切换到wrap_content

这是相关的xml代码:

...<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" >...

1 个答案:

答案 0 :(得分:0)

触摸布局参数后,请致电requestLayout()以使更改生效。

要隐藏/显示布局,请考虑使用setVisibility()代替GONEVISIBLE