Это, вероятно, связано с этой строкой:
currencyFormat.positivePrefix = currencyFormat.positivePrefix + " "
Положительный префикс в этой точке зависит от валюты переданного языка. Если, например, вы вызываете свой метод как getCurrencyDecimalFormat(Locale.US, Currency.getInstance("EUR"))
, тогда ваш currencyFormat
привязан к доллару США в этот момент (а currencyFormat.positivePrefix
приводит к $
).
Переместите эту строку дальше вниз,ниже настройки вашего формата символов. Но я не уверен, зачем тебе это нужно. Наличие пробела после символа валюты должно зависеть от локали и не быть жестко закодированным.
fun getCurrencyDecimalFormat(locale: Locale, currency: Currency): DecimalFormat {
val currencyFormat = NumberFormat.getCurrencyInstance(locale) as DecimalFormat
currencyFormat.roundingMode = RoundingMode.DOWN
val symbol = currency.getSymbol(locale)
val decimalFormatSymbols = currencyFormat.decimalFormatSymbols
decimalFormatSymbols.currencySymbol = symbol
currencyFormat.decimalFormatSymbols = decimalFormatSymbols
currencyFormat.isParseBigDecimal = true
currencyFormat.positivePrefix = currencyFormat.positivePrefix + " "
return currencyFormat
}