实际上,我遇到了根据行数动态调整textview重力的问题。
我读了this article,但我只是不太了解线程技术的区别,就像textview.post()
,runOnUiThread{}
,GlobalScope.launch(Dispatchers.Main)
,Thead{}.start()
TLDR,简短的问题是“ 为什么下面的代码应在post
范围内运行? ”
private fun setText(text : String) {
textView.text = text
textView.post {
if (textView.lineCount > 1) {
textView.gravity = Gravity.START
}else {
textView.gravity = Gravity.CENTER
}
}
}
另一个简短的问题是“ 为什么它在GlobalScope.launch(Dispatchers.Main)中不起作用? ”
这是我的尝试:
private fun setText(text : String) {
textView.text = text
GlobalScope.launch(Dispatchers.Main) {
if (textView.lineCount > 1) {
textView.gravity = Gravity.START
}else {
textView.gravity = Gravity.CENTER
}
}
}
我试图将其放入GlobalScope.launch(Dispatchers.Main)中,但它有时可行,有时却不可行。
另外,我尝试在没有textView.post()
的情况下制作它,但是它不起作用。
getLineCount()
的源代码似乎不是异步操作?
欢迎任何建议,谢谢一切。