Fix swipe to reply positioning in CIV2.

This commit is contained in:
Alex Hart
2023-09-20 11:48:01 -04:00
parent 05b5078aa9
commit 12db8b5ee1
2 changed files with 10 additions and 6 deletions

View File

@@ -35,7 +35,11 @@ class V2ConversationItemLayout @JvmOverloads constructor(
onMeasureListeners.forEach { it.onPreMeasure() } onMeasureListeners.forEach { it.onPreMeasure() }
super.onMeasure(widthMeasureSpec, heightMeasureSpec) super.onMeasure(widthMeasureSpec, heightMeasureSpec)
val remeasure = onMeasureListeners.map { it.onPostMeasure() }.any { it } var remeasure = false
onMeasureListeners.forEach {
remeasure = it.onPostMeasure() || remeasure
}
if (remeasure) { if (remeasure) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec) super.onMeasure(widthMeasureSpec, heightMeasureSpec)
} }

View File

@@ -112,17 +112,17 @@ open class V2ConversationItemTextOnlyViewHolder<Model : MappingModel<Model>>(
override fun onPreMeasure() = Unit override fun onPreMeasure() = Unit
override fun onPostMeasure(): Boolean { override fun onPostMeasure(): Boolean {
val wrapperHeight = binding.bodyWrapper.measuredHeight
val yTranslation = (wrapperHeight - 38.dp) / 2f
binding.reply.translationY = -yTranslation
return false return false
} }
} }
init { init {
binding.root.addOnMeasureListener(footerDelegate) binding.root.addOnMeasureListener(footerDelegate)
binding.root.addOnMeasureListener(replyDelegate) binding.bodyWrapper.addOnLayoutChangeListener { _, _, top, _, bottom, _, _, _, _ ->
val wrapperHeight = bottom - top
val yTranslation = (wrapperHeight - 38.dp) / 2f
binding.reply.translationY = -yTranslation
}
binding.root.onDispatchTouchEventListener = dispatchTouchEventListener binding.root.onDispatchTouchEventListener = dispatchTouchEventListener