我知道RecyclerView
为我们免费添加/删除项目添加/删除动画。它是否应该支持动画项高度变化?
例如:考虑使用以下xml的行项: -
<LineaLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView android:id="@+id/tv1" />
<TextView android:id="@+id/tv2" android:visibility="gone" />
</LinearLayout>
如果我设置&#34; tv2&#34;对View.VISIBLE
的可见性,行高在没有任何动画的情况下发生变化。
我已经看到了一些尝试在视图本身上运行自己的ValueAnimator
的方法,但我的理解是它是
(1)效率不高
(2)您不应该直接在视图上运行动画,因为它们可能会在动画运行时从用户交互中回收。
答案 0 :(得分:0)
尝试在XML中的max_occurrences = max(counter.values())
target_values = [k for k, v in counter.items() if v == max_occurrences]
android:animateLayoutChanges="true"
答案 1 :(得分:0)
将visibility
组件添加到您在适配器中使用的对象中。在项目视图的onClickListener
中,根据当前状态更改该对象的可见性组件的状态。在onBindViewHolder
中,根据对象的状态设置tv2
的可见性,并通知适配器对象已更改。
以下是一个例子:
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
MyObject obj = myObjects.get(position);
holder.itemView.findViewById(R.id.tv2).setVisibility(obj.isVisible() ? View.VISIBLE : View.GONE);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
obj.setVisible(!obj.isVisible());
notifyItemChanged(position);
}
});
}