Skip to content

Commit

Permalink
Merge pull request #11 from mitsinsar/selection-issues
Browse files Browse the repository at this point in the history
Fix selection currency symbol issue
  • Loading branch information
efguydan authored Feb 17, 2020
2 parents 4ac46e4 + b7231a0 commit 206b9d0
Showing 1 changed file with 14 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,29 +26,29 @@ import java.math.BigDecimal
import java.util.*

class CurrencyEditText(context: Context, attrs: AttributeSet?) : TextInputEditText(context, attrs) {
private var currencySymbolPrefix = ""
private lateinit var currencySymbolPrefix: String
private var textWatcher: CurrencyInputWatcher
private var locale: Locale = Locale.getDefault()

init {
var useCurrencySymbolAsHint = false
inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL
var localeTag: String?
val prefix: String?
val prefix: String
context.theme.obtainStyledAttributes(
attrs,
R.styleable.CurrencyEditText,
0, 0
).run {
try {
prefix = getString(R.styleable.CurrencyEditText_currencySymbol)
prefix = getString(R.styleable.CurrencyEditText_currencySymbol).orEmpty()
localeTag = getString(R.styleable.CurrencyEditText_localeTag)
useCurrencySymbolAsHint = getBoolean(R.styleable.CurrencyEditText_useCurrencySymbolAsHint, false)
} finally {
recycle()
}
}
if (!prefix.isNullOrBlank()) currencySymbolPrefix = "$prefix "
currencySymbolPrefix = if (prefix.isBlank()) "" else "$prefix "
if (useCurrencySymbolAsHint) hint = currencySymbolPrefix
if (isLollipopAndAbove() && !localeTag.isNullOrBlank()) locale = getLocaleFromTag(localeTag!!)
textWatcher = CurrencyInputWatcher(this, currencySymbolPrefix, locale)
Expand Down Expand Up @@ -108,4 +108,14 @@ class CurrencyEditText(context: Context, attrs: AttributeSet?) : TextInputEditTe
if (text.toString() == currencySymbolPrefix) setText("")
}
}

override fun onSelectionChanged(selStart: Int, selEnd: Int) {
if (::currencySymbolPrefix.isInitialized.not()) return
val symbolLength = currencySymbolPrefix.length
if (selEnd < symbolLength && text.toString().length >= symbolLength) {
setSelection(symbolLength)
} else {
super.onSelectionChanged(selStart, selEnd)
}
}
}

0 comments on commit 206b9d0

Please sign in to comment.