gpt4 book ai didi

android - setContentView() 先调用还是最后调用?

转载 作者:行者123 更新时间:2023-11-29 14:12:03 26 4
gpt4 key购买 nike

我最近收到了有关创建程序化 View 的问题。为什么所有的 View 都初始化好,所有的参数都设置好了,还要调用setContentView?

简单的例子:

    override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

val l = LinearLayout(this)
l.orientation = LinearLayout.VERTICAL
for (i in 0 until 300)
l.addView(someTextView(i.toString()))
setContentView(l)
}

fun someTextView(text: String): TextView {
val t = TextView(this)
t.text = text
return t
}

对比

    override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

val l = LinearLayout(this)
setContentView(l)
l.orientation = LinearLayout.VERTICAL
for (i in 0 until 300)
l.addView(someTextView(i.toString()))

}

fun someTextView(text: String): TextView {
val t = TextView(this)
t.text = text
return t
}

两者在效率上有区别吗?同样在更复杂的 View 的情况下?

最佳答案

你的代码没有问题,就是这个原因。-setContentView 只做呈现 Activity 界面的 View -首先,您通过 ActivityContext 创建一个线性布局。然后向其中添加很多 View 。之后您说“嘿 Activity,这是您的 View ”。第二个只是将您的线性布局附加到 Activity 中,然后将 View 添加到it.both都是正常的,没有错。但是

setContentView 在现实生活中非常好,因为没有人会做你想做的事。每个 Activity、Fragment .. 等都需要一个 xml 文件来标识它的布局,每个 View 都是按设计组织的。之后,他们可以通过 id 调用它 View ,只需编辑 xml 文件即可组织 View (无需更改大量代码)。

So.基本上 setContentView 只是一个方法来说明哪个 View 将成为它的界面的 Activity

关于android - setContentView() 先调用还是最后调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58125686/

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