我创建待办事项列表。现在我想在RecylerView中显示待办事项列表,其中包含卡片和显示文本视图(标题)和列表视图的卡片。
Listview中的内容应该是TodoList中的任务。
我想在不滚动的情况下修复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中的一个糟糕的解决方案吗?有没有更好的解决方案来解决这个问题?
答案 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();
}