kotlin - 如何使用Kotlin中的代码从OnCreate更改文本大小

标签 kotlin text-size

我有一个具有Spinner和TextView的 Activity 。我想使用微调框更改TextView中的文本大小。 Spinner中有三种尺寸(小,中和大),我将这些尺寸放在dimen.xml中。如何使用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()
                }
            }
        }
    }

最佳答案

您必须更改whenR.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>

关于kotlin - 如何使用Kotlin中的代码从OnCreate更改文本大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55424114/

相关文章:

android - CoroutineScope - CompletableDeferred 取消

android - 如何根据屏幕尺寸设置文字大小?

android - 使用 Project Astoria 转换 Kotlin Android 应用程序

android - 以编程方式设置后获取奇怪的字体大小

android - setTextSize - 设置比预期更大的文本

button - 如何更改 flutter Material 按钮的字体大小?

java - 如何更改 JFrame 内 System.out.println 局部变量的大小

kotlin - 如何使用名称中带有冒号的 json 元素的类数据 - Kotlin

intellij-idea - 无法使用yeoman生成器Gradle + Kotlin生成新项目

testing - kotlin:如何从 Spek 类继承以拥有公共(public)夹具