Как изменить размер текста с OnCreate, используя код в Kotlin - PullRequest
1 голос
/ 29 марта 2019

У меня есть активность, в которой есть Spinner и TextView.Я хочу использовать Spinner для изменения размера текста в TextView.Есть три размера в спиннер (маленький, медиа и большой), я поместил эти размеры в измерение ..ml. Как я могу использовать Spinner для изменения размера?Я пробовал этот код, но он не работал

val fontSize = arrayOf("large", "medium", "small")

    spinner.adapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, fontSize)
    spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
        override fun onNothingSelected(parent: AdapterView<*>?) {
        }

        override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
            when(position){
                0 -> {
                    textView.textSize = R.dimen.font_large.toFloat()
                }
                1 ->{
                    textView.textSize = R.dimen.font_medium.toFloat()
                }
                2 ->{
                    textView.textSize = R.dimen.font_small.toFloat()
                }
            }
        }
    }

1 Ответ

3 голосов
/ 29 марта 2019

Вы должны изменить свой when.R.dimen.font_large.toFloat() вернет вам неправильное значение.

Вы должны получить R.dimen.font_large из ресурсов:

when (position) {
    0 -> R.dimen.font_large
    1 -> R.dimen.font_medium
    2 -> R.dimen.font_small
    else -> null
}?.let {
    textView.textSize = resources.getDimension(it)
}

И в dimens.xml вы должны сохранить значения с sp:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="font_small">10sp</dimen>
    <dimen name="font_medium">20sp</dimen>
    <dimen name="font_large">30sp</dimen>
</resources>
...