From 7713f5b6e5d3e70c2b50abccc248f9af674f154f Mon Sep 17 00:00:00 2001 From: dankito Date: Mon, 25 May 2020 00:08:51 +0200 Subject: [PATCH] Forgot to commit MaxHeightScrollView --- .../ui/android/views/MaxHeightScrollView.kt | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 ui/BankingAndroidApp/src/main/java/net/dankito/banking/ui/android/views/MaxHeightScrollView.kt diff --git a/ui/BankingAndroidApp/src/main/java/net/dankito/banking/ui/android/views/MaxHeightScrollView.kt b/ui/BankingAndroidApp/src/main/java/net/dankito/banking/ui/android/views/MaxHeightScrollView.kt new file mode 100644 index 00000000..ba93ede2 --- /dev/null +++ b/ui/BankingAndroidApp/src/main/java/net/dankito/banking/ui/android/views/MaxHeightScrollView.kt @@ -0,0 +1,42 @@ +package net.dankito.banking.ui.android.views + +import android.content.Context +import android.util.AttributeSet +import android.widget.ScrollView + + +open class MaxHeightScrollView @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 +) : ScrollView(context, attrs, defStyleAttr) { + + companion object { + const val DisableMaxHeight = -1 + } + + + open var maxHeightInPixel = DisableMaxHeight + protected set + + + open fun setMaxHeightInDp(maxHeightInDp: Int) { + val density = resources.displayMetrics.density + maxHeightInPixel = (maxHeightInDp * density).toInt() + } + + open fun disableMaxHeight() { + maxHeightInPixel = DisableMaxHeight + } + + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + if (maxHeightInPixel >= 0) { + val adjustedHeightMeasureSpec = MeasureSpec.makeMeasureSpec(maxHeightInPixel, MeasureSpec.AT_MOST) + + super.onMeasure(widthMeasureSpec, adjustedHeightMeasureSpec) + } + else { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + } + } + +} \ No newline at end of file