什麼問題?
的問題來自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