【发布时间】:2020-08-04 07:08:38
【问题描述】:
我正在使用带有场景 xml 的 MotionLayout:
<Transition
motion:constraintSetStart="@+id/start"
motion:constraintSetEnd="@+id/end"
>
<OnSwipe
motion:touchAnchorId="@+id/v_top_sheet"
motion:touchRegionId="@+id/v_top_sheet_touch_region"
motion:touchAnchorSide="bottom"
motion:dragDirection="dragDown" />
</Transition>
这 2 个 ConstraintSets 仅引用 2 个视图 ID:v_notifications_container 和 v_top_sheet。
在我的 Activity 中,我想将一个普通的 ClickListener 设置为此 MotionLayout 中的其他视图之一:
iv_notification_status.setOnClickListener { Timber.d("Hello") }
这行被执行了,但是 ClickListener 从未被触发。我搜索了其他帖子,但其中大多数都涉及在 motion:touchAnchorId 的同一视图上设置 ClickListener。这不是这里的情况。 ClickListener 设置为在 MotionLayout 设置中未曾提及的 View。如果我删除 app:layoutDescription 属性,点击就可以了。
我也尝试使用setOnTouchListener,但它也从未被调用过。
如何在 MotionLayout 中设置点击监听器?
【问题讨论】:
-
<Constraint android:id="@id/iv_notification_status"> <PropertySet app:applyMotionScene="false" app:visibilityMode="ignore" /> </Constraint>你能试试dis吗? -
不错的方法,但不幸的是没有区别。
标签: android onclicklistener android-constraintlayout android-motionlayout