diff options
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt index 3965344f7a..447837fefd 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt @@ -5,8 +5,10 @@ import android.content.Intent import android.graphics.drawable.Drawable import android.net.Uri import android.view.View +import android.view.View.MeasureSpec import android.widget.ImageView import android.widget.TextView +import kotlin.properties.Delegates.observable import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.Job @@ -43,6 +45,12 @@ class NotificationBanner( private val message: TextView = parentView.findViewById(R.id.notification_message) private val icon: View = parentView.findViewById(R.id.notification_icon) + private var height: Int by observable(0) { _, oldValue, newValue -> + if (oldValue != newValue) { + onHeightChange?.invoke(newValue) + } + } + private var updateJob: Job? = null private var externalLink: ExternalLink? = null @@ -70,6 +78,10 @@ class NotificationBanner( } ) + var onHeightChange by observable<((Int) -> Unit)?>(null) { _, _, newListener -> + newListener?.invoke(height) + } + var keyState: KeygenEvent? = null set(value) { field = value @@ -242,6 +254,8 @@ class NotificationBanner( banner.setClickable(true) icon.visibility = View.VISIBLE } + + height = recalculateHeight() } private fun hide() { @@ -253,6 +267,17 @@ class NotificationBanner( } } + private fun recalculateHeight(): Int { + banner.apply { + val widthSpec = MeasureSpec.makeMeasureSpec(measuredWidth, MeasureSpec.AT_MOST) + val heightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED) + + measure(widthSpec, heightSpec) + + return measuredHeight + } + } + private fun onClick() { val externalLink = this.externalLink |
