android - 在 ScrollView 中添加 ListView

标签 android listview scrollview android-linearlayout android-relativelayout

<分区>

我想要一个包含 ListView 的可滚动列表。我到处研究但还没有解决方案 :( 根据下面的代码,当我添加 ScrollView 时,listview 高度变小(单行)。我希望 ListView 高度是动态的(基于内容)并且还使完整页面可滚动。我如何实现这一点?或者是否有创建动态线性/相对列表 UI 的方法?请提出建议。

XML代码:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingTop="@dimen/activity_horizontal_margin"
    android:orientation="vertical" >

        <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin">

        <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/kollege_name"
        android:width="170dp" />

        <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:gravity="right"
        android:text="@string/grade_value"
        android:width="120dp" />

        <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/textView2"
        android:layout_below="@+id/textView2"
        android:text="@string/code_value" />
        </RelativeLayout>

        <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:background="@android:color/darker_gray" />


        <TextView
        android:id="@+id/textView4"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/your_fit"
        android:textSize="12sp" />

        <ListView
        android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

        <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:background="@android:color/darker_gray" />

        <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin" >

        <TextView
            android:id="@+id/textView10"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/tuition"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/textView11"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"

            android:text="@string/tuition_value" />

        </RelativeLayout>


        <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:background="@android:color/darker_gray" />

        <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin" >

        <TextView
        android:id="@+id/textView12"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/placements"
        android:textSize="12sp" />

        <TextView
        android:id="@+id/textView13"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView12"
        android:text="@string/EXTC"
        android:layout_marginTop="3dp" />

        <TextView
        android:id="@+id/textView14"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView13"
        android:text="@string/IT"
        android:layout_marginTop="3dp" />

        <TextView
        android:id="@+id/textView15"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView14"
        android:text="@string/COMP"
        android:layout_marginTop="3dp" />

        <TextView
        android:id="@+id/textView16"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView15"
        android:text="@string/MECH"
        android:layout_marginTop="3dp" />

        <TextView
        android:id="@+id/textView17"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView16"
        android:text="@string/INST"
        android:layout_marginTop="3dp" />
        </RelativeLayout>

        <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:background="@android:color/darker_gray" />


        <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin" >

        <TextView
        android:id="@+id/textView18"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/placements"
        android:textSize="12sp" />

        <TextView
        android:id="@+id/textView19"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView18"
        android:text="@string/EXTC"
        android:layout_marginTop="3dp" />

        <TextView
        android:id="@+id/textView20"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView19"
        android:text="@string/IT"
        android:layout_marginTop="3dp" />
        </RelativeLayout>
        </LinearLayout>

        </ScrollView>

</LinearLayout>

最佳答案

最好在 ListView Adapter 中设置不同的 View 类型或使用 ListView Footer 和 Header。

您也可以使用此方法来解决您在 ScrollView 中使用 ListView 时遇到的问题

public static void updateListViewHeight(ListView myListView) {
     ListAdapter myListAdapter = myListView.getAdapter();
     if (myListAdapter == null) {            
              return;
     }
    //get listview height
    int totalHeight = 0;
    int adapterCount = myListAdapter.getCount()
    for (int size = 0; size < adapterCount ; size++) {
        View listItem = myListAdapter.getView(size, null, myListView);
        listItem.measure(0, 0);
        totalHeight += listItem.getMeasuredHeight();
    }
    //Change Height of ListView 
    ViewGroup.LayoutParams params = myListView.getLayoutParams();
    params.height = totalHeight + (myListView.getDividerHeight() * (adapterCount - 1));
    myListView.setLayoutParams(params);
}

关于android - 在 ScrollView 中添加 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18863344/

相关文章:

android - 在屏幕右侧的按钮中添加一个按钮

java - 单击项目时从 ListView 中删除项目

android - 我有一系列的对象。我想在 ListView 中显示它的元素

android - 在 ScrollView 中实现向左/向右滑动

java - Android html.fromHtml 不工作

android - Android应用程序中的简单数据文件(xml格式)存储在哪里?

android - webview 和 scrollview 的问题

ios - 检测 UIScrollview 下面的 UIButton 的触摸

android - 更改微调器的颜色

android - 我可以在一个 ListView 项目中有不同的可点击 View 吗?