如何使用 Kotlin 中的代码从 OnCreate 更改文本大小
How to change text size from OnCreate using code in Kotlin
我有一个 activity,它有 Spinner 和 TextView。我想使用 Spinner 来更改 TextView 中的文本大小。旋转器中有三种尺寸(小号、中号和大号),我将这些尺寸放入 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()
}
}
}
}
你必须改变你的when
。 R.dimen.font_large.toFloat()
return 你的值错了。
您必须从资源中获取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>
我有一个 activity,它有 Spinner 和 TextView。我想使用 Spinner 来更改 TextView 中的文本大小。旋转器中有三种尺寸(小号、中号和大号),我将这些尺寸放入 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()
}
}
}
}
你必须改变你的when
。 R.dimen.font_large.toFloat()
return 你的值错了。
您必须从资源中获取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>