在Android 4.3中使用RecyclerView不是固定大小

时间:2014-11-18 00:01:02

标签: android android-recyclerview

我已经阅读了一些关于RecyclerView的tuts和info页面,所以我决定这样做,并且当我按照这些方式进行最终我做到了,但我有一个问题

  • 我在xml布局中有RecyclerView,
  • 我为它编写了一个标准适配器(当然是使用RecyclerView.ViewHolder的那个),
  • 我有一个模型类:列表配置文件,其中至少有一个项目,
  • 我设置了LayoutManager(LinearLayoutManager),
  • 并添加了DefaultAnimator ....

这是xml中声明的RView:

<android.support.v7.widget.RecyclerView
        android:id="@+id/profiles_list"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="200dp"/>

如你所见,它有一个固定的高度。但是我想要不要有一个固定的高度,或者它可以有一个最大高度,但是直到它达到那个大小,应该总是“wrap_content”。

可以添加和删除项目 - &gt;所以我认为 setHasFixedSize(false)对于这样的事情是好的,并且当它达到极限大小时它允许在其中滚动,如果它小于给定高度,它会缩小其高度以包装内容关于项目的删除,以及此视图下的布局元素与动画cource一起捕捉到它。

它只是一个梦想(我的意思是这个功能已经编码并且开箱即用 - &gt;可以使用......)

1 个答案:

答案 0 :(得分:0)

我不确定它是否正确,但这有助于我。所以只需在每次添加或删除操作后调用

DefaultItemAnimator mItemAnimator = new DefaultItemAnimator();
mRecyclerView.postDelayed(new Runnable() {

     @Override
     public void run() {
         mRecyclerView.getRecycledViewPool().clear();
         mAdapter.notifyDataSetChanged();
     }

}, mItemAnimator.getRemoveDuration() + mItemAnimator.getMoveDuration());