Android列表视图不可滚动

时间:2014-03-28 10:24:02

标签: android listview android-listview android-linearlayout

我的个人资料页面包含一个包含一些textview和imageview以及listview的linearlayout。 (见图)

enter image description here

问题在于我想让整个页面像在twitter应用程序中一样滚动,而不仅仅是listview。因此列表视图需要扩展到最大高度。

如何强制列表视图扩展到最大大小而不能滚动。

我的linearlayout将是第二个选项,但是需要可以添加自定义arrayadapter和listview中的自定义行。

3 个答案:

答案 0 :(得分:8)

您可以通过两种方式实现这一目标:

#1将Header添加到Listview

  View header = inflater.inflate(R.layout.your_header_layout, null);
  yourlistview.addHeader(header);

#2您可以根据children设置列表视图高度。使用listview调用此fxn并将所有小部件保存在scrollview中。

    public static void setListViewHeightBasedOnChildren(ListView listView) {

    ListAdapter listAdapter = listView.getAdapter();
    if (listAdapter == null) {
        return;
    }

    int totalHeight = 0;
    for (int i = 0, len = listAdapter.getCount(); i < len; i++) {
        View listItem = listAdapter.getView(i, null, listView);
        listItem.measure(0, 0); 
        totalHeight += listItem.getMeasuredHeight();
    }

    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight
            + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
    listView.setLayoutParams(params);
}

答案 1 :(得分:1)

是的,您可以将滚动视图作为父视图,并为列表视图创建自定义类。 您可以通过此链接查看我的答案

list view in scroll view

答案 2 :(得分:0)

使用ScrollView打包您的布局:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true">

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

   ......
</LinearLayout
</ScrollView>

请记住,ScrollView只接收一个孩子。因此,相应地调整原始布局。