关于TextView设置IconFont赋值String代码无效 症状 我希望做一个配置中心系统, 下发tab栏的配置, 来动态改变tab栏. 这里我选择的是iconFont, 因为他占用的空间更小, 但是我在json传strings.xml相同
关于TextView设置IconFont赋值String代码无效
症状
- 我希望做一个配置中心系统, 下发tab栏的配置, 来动态改变tab栏. 这里我选择的是iconFont, 因为他占用的空间更小, 但是我在json传strings.xml相同的编码时,发现不对, 字体并没有改变
- 但是通过context.getString, 却能正常显示为右图, 什么原因呢?
症结
How To Solve?
setText("\ue6f2");// "&#x" 替换成 "\u",用 unicode 字符来表示
这里还有一个问题:
- 你自己转化拼接的String->“\ue6f2” ,setText是无效的, 还是unicode的问题
- 我这里也提供一个方法, 助小伙伴们解决这个问题
UtilKString
fun string2Unicode(str: String): String {
if (str.isEmpty()) return ""
val stringBuffer = StringBuffer()
if (str.startsWith("&#x")) {
val hex = str.replace("&#x", "").replace(";", "").trim()
val data = Integer.parseInt(hex, 16)
stringBuffer.append(data.toChar())
} else if (str.startsWith("&#")) {
val hex = str.replace("&#", "").replace(";", "").trim()
val data = Integer.parseInt(hex, 10)
stringBuffer.append(data.toChar())
} else if (str.startsWith("\\u")) {
val hex = str.replace("\\u", "").trim()
val data = Integer.parseInt(hex, 16)
stringBuffer.append(data.toChar())
} else {
return str
}
return stringBuffer.toString()
}
解决!!!Bingo~