Adds vertical centering of title when no subtitle is present

This commit is contained in:
ericdecanini 2022-05-13 13:07:20 +02:00
parent 52c404ac9c
commit 21fe5a23fb

View File

@ -18,9 +18,10 @@ package im.vector.app.features.home.room.list
import android.view.HapticFeedbackConstants import android.view.HapticFeedbackConstants
import android.view.View import android.view.View
import android.view.ViewGroup
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
import androidx.core.view.isInvisible import androidx.core.view.isInvisible
import androidx.core.view.isVisible import androidx.core.view.isVisible
import com.airbnb.epoxy.EpoxyAttribute import com.airbnb.epoxy.EpoxyAttribute
@ -134,12 +135,33 @@ abstract class RoomSummaryItem : VectorEpoxyModel<RoomSummaryItem.Holder>() {
private fun renderForDefaultDisplayMode(holder: Holder) { private fun renderForDefaultDisplayMode(holder: Holder) {
holder.subtitleView.text = lastFormattedEvent.charSequence holder.subtitleView.text = lastFormattedEvent.charSequence
holder.lastEventTimeView.text = lastEventTime holder.lastEventTimeView.text = lastEventTime
holder.typingView.setTextOrHide(typingMessage)
holder.subtitleView.isInvisible = holder.typingView.isVisible
} }
private fun renderForFilteredDisplayMode(holder: Holder) { private fun renderForFilteredDisplayMode(holder: Holder) {
holder.subtitleView.text = subtitle holder.subtitleView.text = subtitle
holder.typingView.setTextOrHide(typingMessage) if (subtitle.isEmpty()) {
holder.subtitleView.isInvisible = holder.typingView.isVisible holder.centerTitleVertically()
}
}
private fun Holder.centerTitleVertically() {
removeTitleTopMargin()
constrainTitleToParentBottom()
}
private fun Holder.removeTitleTopMargin() {
val layoutParams = titleView.layoutParams as ConstraintLayout.LayoutParams
layoutParams.topMargin = 0
titleView.layoutParams = layoutParams
}
private fun Holder.constrainTitleToParentBottom() {
val constraintSet = ConstraintSet()
constraintSet.clone(rootView)
constraintSet.connect(titleView.id, ConstraintSet.BOTTOM, rootView.id, ConstraintSet.BOTTOM)
constraintSet.applyTo(rootView)
} }
override fun unbind(holder: Holder) { override fun unbind(holder: Holder) {
@ -175,6 +197,6 @@ abstract class RoomSummaryItem : VectorEpoxyModel<RoomSummaryItem.Holder>() {
val roomAvatarPublicDecorationImageView by bind<ImageView>(R.id.roomAvatarPublicDecorationImageView) val roomAvatarPublicDecorationImageView by bind<ImageView>(R.id.roomAvatarPublicDecorationImageView)
val roomAvatarFailSendingImageView by bind<ImageView>(R.id.roomAvatarFailSendingImageView) val roomAvatarFailSendingImageView by bind<ImageView>(R.id.roomAvatarFailSendingImageView)
val roomAvatarPresenceImageView by bind<PresenceStateImageView>(R.id.roomAvatarPresenceImageView) val roomAvatarPresenceImageView by bind<PresenceStateImageView>(R.id.roomAvatarPresenceImageView)
val rootView by bind<ViewGroup>(R.id.itemRoomLayout) val rootView by bind<ConstraintLayout>(R.id.itemRoomLayout)
} }
} }