视图会自动膨胀吗?

Are Views automatically inflated?

据我了解,LayoutInflater 将 XML 转换为视图。但是当我在代码中使用 Buttons、TextViews 或其他小部件时,我只需使用 findViewById() 而不必先膨胀这些视图。这些视图会自动膨胀吗?如果是这样,什么时候视图会自动膨胀,什么时候必须手动膨胀它们?

如果您手动创建 activity 和 xml,则您会手动扩充视图。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_activity); 
}

您只需膨胀一个 xml 布局,然后所有视图组和视图(按钮、文本视图、编辑文本等)都会自动显示。

所以在 Activity class 中,oncreate 方法有一行 SetContentview(),这会膨胀 xml 布局。

Activity 需要在其 onCreate 方法中包含对 setContentView(R.layout.<your_layout_here>) 的调用。这会将指定布局中的 XML 膨胀到 Activity 的视图层次结构中。对于 Fragment,重写 onCreateView 方法,如下所示:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.<your_layout_here>, container, false);
}

将布局(及其所有子项 Views)扩展到视图层次结构后,您可以使用 findViewById(R.id.<your_view_id>) 获取对实际 View 您已经膨胀到层次结构中并使用它的对象。

这里有几件事:

1. 查看您的 activity(UI 屏幕),由setContentView()方法设置。

2. 查看特定 UI 组件 例如按钮,可以在 activity_layout 的 xml 中创建,也可以单独膨胀一个 xml 特定 UI 组件的布局文件。最好的 示例 和使用就像为您的自定义 Toast 扩充 xml 布局文件。

所以,这里是与 setContentView() 和为单独视图扩充 xml 布局文件相关的事情: 这两个为视图和视图组件提供布局,它们为布局[=33=创建二进制输出] 并如上所述使用它们。