gpt4 book ai didi

android - Android-从代码更改微调框的字体大小

转载 作者:行者123 更新时间:2023-12-02 13:42:20 24 4
gpt4 key购买 nike

我正在更新应用程序上所有文本的字体大小,我想要实现的是,当我选择字体大小时,我应该能够更新该 Activity 中所有文本的字体大小。

我唯一的问题是我在Spinner Object上找不到size属性。
这就是我对“文本 View ”所做的工作,是否可以为Spinners应用类似于此代码的代码?

const val HEADER_TEXT = 24
const val NORMAL_TEXT = 14

private fun updateAssetSize(textView: TextView, additionalSize: Int, type: Int) {
val size = additionalSize + type
textView.setTextSize(COMPLEX_UNIT_SP, size.toFloat());
}

//calling the method:
updateAssetSize(screenText, additionalFontSize, HEADER_TEXT)

注意:这应该通过代码完成,因为它将在运行时更新。

enter image description here

最佳答案

基于@Zain建议,我通过使用adapterlist对象解决了此问题。我创建了一个带有fontSize和text属性的自定义类,而不是使用String

class SpinnerItem(
val text: String,
var fontSize: Int
) {


// this is necessary, in order for the text to display the texts in the dropdown list
override fun toString(): String {
return text
}
}

这是我创建的AdapterList:
class SpinnerItemListAdapter(
context: Context,
val resourceId: Int,
var list: ArrayList<SpinnerItem>
) : ArrayAdapter<SpinnerItem>(context, resourceId, list) {

override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val text = this.list[position].text
val size = this.list[position].fontSize
val inflater = LayoutInflater.from(context)
val convertView = inflater.inflate(resourceId, parent, false)

val simpleTextView = convertView.findViewById(R.id.simpleTextView) as TextView
simpleTextView.text = text
simpleTextView.setTextSize(size.toFloat())

return convertView
}

// We'll call this whenever there's an update in the fontSize
fun swapList(list: ArrayList<SpinnerItem>) {
clear()
addAll(list)
notifyDataSetChanged()
}
}

这是自定义XML文件 spinner_item.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/simpleTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:padding="12dp"
android:textSize="16sp" />

要更新的微调器:
var fontSizes = arrayListOf(
SpinnerItem("Small", NORMAL_TEXT, "Default"),
SpinnerItem("Normal", NORMAL_TEXT, "Default"),
SpinnerItem("Large", NORMAL_TEXT, "Default"),
SpinnerItem("Largest", NORMAL_TEXT, "Default")
)

var fontSizeAdapterItem = SpinnerItemListAdapter(
this,
R.layout.spinner_item,
toSpinnerItemList(fontSizes, newSize)
)

这是我们更新时会发生的情况:
private fun updateSpinnerSize(additional: Int) {
val newSize = additional + NORMAL_TEXT

fontSizes = toSpinnerItemList(fontSizes, newSize)

fontSizeAdapterItem?.let {
it.swapList(fontSizes)
}
}

private fun toSpinnerItemList(
list: ArrayList<SpinnerItem>,
newSize: Int
): ArrayList<SpinnerItem> {
val itemList = ArrayList<SpinnerItem>()

for (item in list) {
item.fontSize = newSize
itemList.add(item)
}
return itemList
}

关于android - Android-从代码更改微调框的字体大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62308018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com