Recycler视图notifyItemInserted空白空间

时间:2017-02-16 09:01:28

标签: android android-recyclerview android-animation expandablerecyclerview

我有一个问题,我想用自定义颜色或渐变填充扩展空间。但是,RecyclerView的工作方式是通过在项目之间留下空白区域来扩展行,从而导致看到白色背景(屏幕截图)或任何背景颜色。在扩展动画之后,空白空间被填充,其中onBindViewHolder被调用。

这可以用某种方式解决,我可以用自定义视图填充这个空白空间,这样它可以很好地获得epxanded而不会出现颜色闪烁吗?

有没有办法可以将侦听器附加到动画上并用虚拟视图覆盖它?

在显示子视图之前:

Right before the child views are shown

显示子视图后(组扩展)

After the child views are shown (group is expanded)

编辑:按要求添加了RecyclerView的xml

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
<android.support.v7.widget.RecyclerView
    android:id="@+id/recycler_view"
    style="@style/myRecyclerViewStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
</FrameLayout>

group_item.xml

<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/list_group_item_height"
android:background="@android:color/holo_green_light"
android:clickable="true"
android:foreground="?attr/selectableItemBackground">

<TextView
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"/>

</FrameLayout>

child_item.xml

<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/list_item_height"
android:background="@android:color/holo_green_light"
android:clickable="true">

<TextView
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"/>

</FrameLayout>

即使我将所有高度更改为wrap_content仍然相同,动画只是epxands视图并留下一个空的空间(recyclerView的背景),我想以某种方式填写。

这取自此库:https://github.com/h6ah4i/android-advancedrecyclerview

1 个答案:

答案 0 :(得分:0)

这应该是因为您可能在适配器类中提供了match_parent。希望这有用:)