From 3695d7a5f1f7fc8d59e6eebef86bf38676f8c655 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Wed, 1 Mar 2023 14:49:40 -0400 Subject: [PATCH] Fix marquee scroll behavior in VoiceNotePlayerView. --- .../components/voice/VoiceNotePlayerView.kt | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlayerView.kt b/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlayerView.kt index 26234606e..5d20e083a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlayerView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/voice/VoiceNotePlayerView.kt @@ -4,11 +4,15 @@ import android.content.Context import android.net.Uri import android.util.AttributeSet import android.view.View +import android.view.ViewGroup import android.view.animation.Animation import android.view.animation.AnimationUtils import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat +import androidx.core.view.doOnNextLayout +import androidx.core.view.updateLayoutParams +import androidx.core.widget.doOnTextChanged import com.airbnb.lottie.LottieAnimationView import com.airbnb.lottie.LottieProperty import com.airbnb.lottie.SimpleColorFilter @@ -56,6 +60,17 @@ class VoiceNotePlayerView @JvmOverloads constructor( closeButton = findViewById(R.id.voice_note_player_close) infoView.isSelected = true + infoView.doOnTextChanged { _, _, _, _ -> + infoView.updateLayoutParams { + width = ViewGroup.LayoutParams.WRAP_CONTENT + + infoView.doOnNextLayout { + infoView.updateLayoutParams { + width = infoView.measuredWidth + } + } + } + } val speedTouchTarget: View = findViewById(R.id.voice_note_player_speed_touch_target) speedTouchTarget.setOnClickListener { @@ -111,6 +126,7 @@ class VoiceNotePlayerView @JvmOverloads constructor( } fun setState(state: State) { + val prevName = lastState?.name this.lastState = state if (state.isPaused) { @@ -119,7 +135,7 @@ class VoiceNotePlayerView @JvmOverloads constructor( animateToggleToPause() } - if (infoView.text != state.name) { + if (prevName != state.name) { infoView.text = state.name }