你对活动的根视图是什么意思?

时间:2017-12-12 12:46:59

标签: android xml android-activity rootview

关于活动的根视图,我有一个非常微不足道的困惑。我在谷歌和堆栈溢出搜索这个。我对它有一些了解,但没有找到令人信服的解决方案,因为没有人明确说过这个术语。我的问题似乎相似的问题是关于给定布局的根视图是什么,但对我来说,他们似乎没有指定活动的根视图。尽管我的问题的答案非常直观,我想要一个没有混淆的明确答案。所以这里是代码结构。 我有以下活动课程:

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);
    }
}

创建活动时与之关联的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

的根视图

4 个答案:

答案 0 :(得分:1)

MainActivity的根视图 LinearLayout

您的活动的根View表示您XML布局的最顶级父布局

  

根视图可以是RelativeLayoutCoordinatorLayoutConstraintLayoutLinearLayoutFrameLayout

例如

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

答案 1 :(得分:0)

activity_main.xmlMainActivity的布局。在布局内部,根视图是顶部分层视图,在这种情况下是LinearLayout。它也可以是RelativeLayoutCoordinatorLayoutConstraintLayout等。

答案 2 :(得分:0)

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

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

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

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

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

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

当视图膨胀时,您将以RelativeLayout对象结束,该对象在其某个字段中包含一个包含“HelloWorld”的TextView对象。 在此示例中,根视图是RelativeLayout

答案 3 :(得分:0)

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