gpt4 book ai didi

android - 从转换中排除 ViewGroup(除了一个特定的子级)

转载 作者:行者123 更新时间:2023-11-30 00:24:29 26 4
gpt4 key购买 nike

我试图从共享元素返回转换中排除一个 View 组,比如说回收器 View 。但问题是我不希望回收器 View 的所有子级都排除在外,我希望特定的回收器 View 子级包含转换。

Slide transition = new Slide(Gravity.END); 
transition.excludeTarget(recyclerView, true);
transition.addTarget(ImageView.class);
setExitTransition(transition);
setReturnTransition(transition);

我不明白为什么上面的代码不起作用。如果您有任何想法或任何方法来实现这一目标,请告诉我?

最佳答案

问题是什么?

问题来自Transition#captureValues()函数 if 语句:


void captureValues(ViewGroup sceneRoot, boolean start) {
clearValues(start);
if ((mTargetIds.size() > 0 || mTargets.size() > 0)
&& (mTargetNames == null || mTargetNames.isEmpty())
&& (mTargetTypes == null || mTargetTypes.isEmpty())) {
...
} else {
captureHierarchy(sceneRoot, start);
}
...
}

第一个语句没有通过,因此执行了 else 情况,这使得您的 addTarget(ImageView.class) 被忽略。

为什么第一个语句没有通过?

因为addTarget(Class) will change mTargetTypes 字段,因此 mTargetIdsmTargets 都将留空。

相反,执行addTarget(int)will change mTargetIds

因此,您的转换将如下所示:


Slide transition = new Slide(Gravity.END);
transition.addTarget(R.id.some_imageview);
setExitTransition(transition);
setReturnTransition(transition);

无需执行transition.excludeTarget(),因为如 addTarget() docs 中所述:

Setting targetIds constrains the Transition to only listen for, and act on, views with these IDs. Views with different IDs, or no IDs whatsoever, will be ignored.

关于android - 从转换中排除 ViewGroup(除了一个特定的子级),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45631186/

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