Как прочитать значения измерения из пользовательского атрибута?

У меня есть пользовательская кнопка, которая полностью состоит из моего собственного xml. Я могу настроить для него стиль, цвет и текст + значок, но теперь мне нужно установить собственный размер текста.

Я добавил к своим стильным атрибутам новый атрибут <attr name="l_buttonTextSize" format="dimension"/>, затем установил значение для textSize из размеров app:l_buttonTextSize="@dimen/text_small". Но я не могу прочитать это при инициализации кнопки.

Вот как я прочитал это значение:

val buttonTxtSize = typedArray.getFloat(btnTextSizeIndex, resources.getDimension(R.dimen.text_medium))
setButtonTextSize(buttonTxtSize)

fun setButtonTextSize(value: Float){
    buttonText.setTextSize(TypedValue.COMPLEX_UNIT_PX, value)
}

У меня есть это исключение:

java.lang.NumberFormatException: For input string: "12.0sp"

Похоже, что строка была отправлена ​​​​вместо значения измерения в виде числа с плавающей запятой.


person martin1337    schedule 04.02.2021    source источник
comment
getDimension вместо getFloat?   -  person Selvin    schedule 04.02.2021


Ответы (1)


Вы можете использовать getDimensionPixelSize

val buttonTxtSize = typedArray.getDimensionPixelSize(btnTextSizeIndex, resources.getDimension(R.dimen.text_medium))
person Subhrajyoti Sen    schedule 04.02.2021