Cardview中的Listview启用滚动

时间:2015-08-19 23:40:39

标签: android listview android-recyclerview android-cardview

我创建待办事项列表。现在我想在RecylerView中显示待办事项列表,其中包含卡片和显示文本视图(标题)和列表视图的卡片。

Listview中的内容应该是TodoList中的任务。

enter image description here

我想在不滚动的情况下修复Listview,这可能吗?

Card_Layout.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    card_view:cardCornerRadius="4dp"
    card_view:contentPadding="8dp"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="16dp"
    android:paddingBottom="16dp"
    card_view:cardBackgroundColor="@color/abc_background_cache_hint_selector_material_light"
    android:background="@drawable/big_card"

    android:elevation="@dimen/elevation_high">

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

        <TextView
            android:id="@+id/title"
            android:layout_width="match_parent"
            android:layout_height="30dp"
            android:gravity="center_vertical"
            />

        <ListView
            android:id="@+id/cardList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingLeft="16dp"
            android:paddingRight="16dp"
            android:paddingTop="16dp"
            android:paddingBottom="16dp"
            android:isScrollContainer="false"
            >

        </ListView>
    </LinearLayout>
</android.support.v7.widget.CardView>

RecylerView.xml显示cardview

 <FrameLayout
            android:id="@+id/frame_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <android.support.v7.widget.RecyclerView
                android:id="@+id/cardList"
                android:layout_width="match_parent"
                android:layout_height="match_parent"


                />

P.s:这是List List中的一个糟糕的解决方案吗?有没有更好的解决方案来解决这个问题?

1 个答案:

答案 0 :(得分:0)

在为listview设置适配器后,只需使用此调用,如下所示

cardlist.setadapter(...);
justifyListViewHeightBasedOnChildren(cardlist);

 public void justifyListViewHeightBasedOnChildren(ListView listView) {

        ListAdapter adapter = listView.getAdapter();

        if (adapter == null) {
            return;
        }
        ViewGroup vg = listView;
        int totalHeight = 0;
        for (int i = 0; i < adapter.getCount(); i++) {
            View listItem = adapter.getView(i, null, vg);
            listItem.measure(0, 0);
            totalHeight += listItem.getMeasuredHeight();
        }

        ViewGroup.LayoutParams par = listView.getLayoutParams();
        par.height = totalHeight + (listView.getDividerHeight() * (adapter.getCount() - 1));
        listView.setLayoutParams(par);
        listView.requestLayout();
    }