gpt4 book ai didi

java - 在 RecyclerView 中扩展项目时使用 TransitionManager 和 ChangeBounds 与layout_height : match_constraint 结合使用会产生奇怪的视觉效果

转载 作者:太空宇宙 更新时间:2023-11-04 10:22:40 27 4
gpt4 key购买 nike

我正在使用 RecyclerView 的自定义适配器,并且我需要在单击项目时展开它们。我关注了this使用Google推荐的方法来实现。扩展工作正常,但使用 TransitionManager.beginDelayedTransition(recyclerView); 的动画并不完全是我想要的。当我尝试在动画期间滚动 RecyclerView 时,也发生了非常奇怪的事情,这会让事情变得困惑。

所以我上网寻找不同的方式来动画扩展。我发现了这个:

            final ChangeBounds transition = new ChangeBounds();
transition.setDuration(100L);
TransitionManager.beginDelayedTransition(mRecyclerView,transition);

这非常有效,因为它只会为扩展项的行添加动画,然后显示 View.GONE View 。不涉及阿尔法过渡等。但后来我不得不将 RecyclerView 的 layout_heightmatch_parent 更改为 match_constraint,因为软键盘通常会隐藏展开的行(用户可以编辑项目和键盘弹出窗口)。

现在发生了什么:当我单击展开 RecyclerView 的项目时,它会自行展开很短的时间,然后返回到正常状态,然后开始动画。它会产生非常奇怪的闪烁动画,这很糟糕并且破坏了平滑度。在将 RecyclerView 的 layout_height 设置为 match_parent 之前,它不会这样做,但现在使用 match_constraint 就会这样做。

我正在使用代码来扩展它。按照上面链接的文章进行操作。

    final boolean isExpanded = position==mExpandedPosition;
// Hidden Views
holder.view1.setVisibility(isExpanded?View.VISIBLE:View.GONE);
holder.view2.setVisibility(isExpanded?View.VISIBLE:View.GONE);
holder.view3.setVisibility(isExpanded?View.VISIBLE:View.GONE);

holder.itemView.setActivated(isExpanded);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mExpandedPosition = isExpanded? -1:holder.getAdapterPosition();
// Animace
final ChangeBounds transition = new ChangeBounds();
transition.setDuration(100L);
TransitionManager.beginDelayedTransition(mRecyclerView,transition);

// Hiding keyboard if it's up
InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);


notifyDataSetChanged();
}
});

我做的事情正确吗?我可能错过了一些基本的东西。我对 Android 开发还很陌生。谢谢!

最佳答案

我找到了解决方案,也许有人会遇到和我一样的问题。这真是一个愚蠢的错误。我将 layout_height 设置为 match_constraint ,但没有设置 layout_width

很简单:还将 layout_width 设置为 match_constraint 解决了问题。

关于java - 在 RecyclerView 中扩展项目时使用 TransitionManager 和 ChangeBounds 与layout_height : match_constraint 结合使用会产生奇怪的视觉效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50930890/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com