activity 的根视图是什么意思?

What do you mean by root view of an activity?

关于什么是 activity 的根视图,我有一个非常微不足道的困惑。我在 google 和堆栈溢出中搜索了这个。我对此有一些了解,但没有得出令人信服的解决方案,因为没有人明确说明该术语。这个问题似乎与我的问题相似,它讲述了给定布局的根视图是什么,但对我来说,它们似乎没有指定 activity is.Though 的根视图,这是我问题的答案非常直观,我想要一个明确的答案,没有 confusion.So 这里是代码结构。 我有以下 activity class :

package com.example.android.viewpager;

import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;


public class MainActivity extends AppCompatActivity {

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

当我创建 activity 时与之关联的 XML 代码是 (activity_main.xml) :

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.android.viewpager.MainActivity">
    </LinearLayout>

根据我的说法,这是 activity_main.xml MainActivity 的根视图吗?

您的 MainActivity 的根视图是 LinearLayout

您的 Activity 的根 View 表示您的 XML 布局的最顶层父布局

The Root View may be a RelativeLayout, CoordinatorLayout, ConstraintLayout, LinearLayout,FrameLayout

例如

您的 activity_main.xml 包含 LinearLayout 作为父布局而不是 LinearLayout 是您的根视图其中包含所有子控件,如 ButtonsImageviewEditTextTextView 等....

activity_main.xml 是您的 MainActivity 的布局。在布局内部,根视图是顶层视图,在本例中是 LinearLayout。它也可以是 RelativeLayoutCoordinatorLayoutConstraintLayout

activity_main 不是根视图。这是定义 activity 布局的 XML 文件。

根视图是此布局中的视图,包含所有其他视图。

在您的示例中,根视图是 LinearLayout

当您执行 setContentView(R.layout.activity_main); 时,系统将解析 XML 文件并使用属性和所有内容创建定义到其中的所有视图和子视图

例如,如果您的 XML 定义如下:

<RelativeLayout
  ...
>
  <TextView
   android:text="HelloWorld"
   ... />
</RelativeLayout>

当视图 膨胀 时,您将以一个 RelativeLayout 对象结束,该对象包含一个 TextView 对象,其中一个对象包含 "HelloWorld"领域。 在此示例中,根视图是 RelativeLayout

能够容纳子视图的第一个视图将称为您的根视图。在您的情况下,线性布局将是您的根布局