我想更深入地了解 Android 的工作原理,并且我需要有人解释 Views 是如何“在幕后”实际工作的。
在正常过程中,我们会在扩展 Activity 的 onCreate 方法中使用方法“setContentView(R.layout.ourlayoutfile)”从 XML 中膨胀(这是正确的词吗?)视图。然后我们会从那个 XML 中找到视图。
快速示例:如果我们需要找到一个按钮,我们需要首先调用“setContentVIew()”,然后在我们的按钮上调用“findViewById”。然后我们可以分别使用这个按钮/视图。
我最近开始玩 LayoutInflater,因为我到了无法使用“setContentView”方法的地步,而令我惊讶的是,我发现我的 Android 知识非常糟糕。我什至无法管理 LayoutInflater 工作。我很尴尬。
一天后,我设法用 LayoutInflater 为视图充气。其实这并不难,我从一开始就已经很接近了,但是有一个参数我不知道要传入什么。请看这段代码:(这一切都发生在 Activity 的 onCreate 方法中)
View v = getLayoutInflater().inflate(R.layout.activity_main, (ViewGroup) getWindow().getDecorView());
final Button b = (Button) v.findViewById(R.id.button1);
final TextView tv = (TextView) v.findViewById(R.id.textView1);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tv.setText("Just random text");
}
});
}
这段代码工作正常,但我面临的问题实际上是这行代码:
getLayoutInflater().inflate(R.layout.activity_main, null);
我总是传递“null”参数,当然它没有用。即使在文档中它说这个参数是可选的!(为什么?,如果需要的话)?
我做了简单的布局。请使用 HiarchyViewer 查看它以及它的外观:
上图中的第二个参数是什么,为什么我们需要它?可能将我的布局( R.layout.activity_main )与 Android 提供的 View 连接起来(从左到右的第一个视图 - 父视图)。如果是这样的话,为什么android不自动连接这两个?!
如果我还需要了解有关 Views 的有用信息,如果有人能告诉我(或发布链接),我将非常高兴。另外,如果我能获得一些关于 Views 工作原理的网站的链接,那就太好了。等等。有用的东西。
如果有人会否决我的问题,请解释。非常感谢大家!