在AsyncTask之后更改视图高度(并使其可滚动)

时间:2014-01-12 04:43:14

标签: android listview android-listview android-asynctask android-linearlayout

我有一个片段选项卡实现,tabContent与FrameLayout如下:

<TabHost
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff"
        android:id="@+id/tab_content_wrapper">

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="0"/>

        <FrameLayout
            android:id="@+id/realtabcontent"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>

        <TabWidget
            android:id="@android:id/tabs"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_weight="0"
            android:showDividers="none"
            android:background="#434343"/>

    </LinearLayout>
</TabHost>

然后在真实内容中,我可以添加ListView并且它可以滚动。但是,如果我希望RelativeLayout拥有固定的高度内容并在其下方添加ListView,则会出现问题。它具有以下资源布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:id="@+id/some_content_with_listview"
    android:orientation="vertical"
    android:background="#ffffff">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="false"
        android:gravity="top"
        android:paddingLeft="10dp"
        android:paddingTop="7dp"
        android:paddingRight="10dp"
        android:id="@+id/pre_list_view_content"
        android:layout_marginLeft="7dp"
        android:layout_marginRight="7dp">
        ...
    </RelativeLayout>
    <ListView
        android:id="@+id/my_list_view"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:smoothScrollbar="true">
    </ListView>
</LinearLayout>

AsyncTask之后,my_list_view会填充项目,并在非常短的可滚动ListView内显示。在没有滚动的情况下,我似乎无法使LinearLayout更高,以包含整个ListView。因此,为了澄清,我想使 ListView不可滚动,但要在realtabcontent(FrameLayout)中使 LinearLayout可滚动

向前谢谢!

1 个答案:

答案 0 :(得分:1)

您可以为相对布局创建不同的布局:

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="false"
        android:gravity="top"
        android:paddingLeft="10dp"
        android:paddingTop="7dp"
        android:paddingRight="10dp"
        android:id="@+id/pre_list_view_content"
        android:layout_marginLeft="7dp"
        android:layout_marginRight="7dp">
        ...
    </RelativeLayout>

将其添加为列表视图的标题。

 //inflate this layout and get view object
lvMyListView.addHeaderView(view,null,false);

您可以查看此内容,了解有关添加标题的更多信息

http://www.vogella.com/tutorials/AndroidListView/article.html#miscellaneous_headerfooter