什么问题?
的问题来自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 changemTargetTypes
字段,从而既mTargetIds
和mTargets
将被留为空。
取而代之,执行addTarget(int)
,其中will changemTargetIds
。
因此,这里是你的过渡将是什么样子:
Slide transition = new Slide(Gravity.END);
transition.addTarget(R.id.some_imageview);
setExitTransition(transition);
setReturnTransition(transition);
无需进行transition.excludeTarget()
,因为在addTarget()
docs说:
设置targetIds约束过渡到只监听,并采取行动,用这些ID查看。具有不同ID的视图或任何ID都将被忽略。
你用这段代码得到了什么? – azizbekian
它只是排除整个recyclerview。我的一个回收器视图项目中有一个imageview。它不尊重这个'transition.addTarget(ImageView.class);' – santalu