【问题标题】:What do you mean by root view of an activity?活动的根视图是什么意思?
【发布时间】:2018-05-26 03:54:41
【问题描述】:

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

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.xmlMainActivity 的根视图吗?

【问题讨论】:

  • ..... 是您活动的根视图。 IE。 xml 文件中的外部父级
  • 这个 LinearLayout 是你的 MainActivity 的根视图
  • 第一个能够容纳子视图的视图将被称为您的根视图。
  • What is a rootView?的可能重复
  • 这不是重复的先生......我在 StackOverflow 中得到的问题都是关于布局的根视图,而不是关于活动的根视图。我知道这是一个微不足道的问题,但我的好奇心让我发布了这样一个问题。谢谢

标签: android xml android-activity rootview


【解决方案1】:

MainActivity 的根视图是 LinearLayout

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

根视图可能是RelativeLayoutCoordinatorLayoutConstraintLayoutLinearLayoutFrameLayout

举例

您的 activity_main.xml 包含 LinearLayout 作为父布局,而不是 LinearLayout 是您的根视图,其中包含所有子控件,例如 Buttons、@ 987654334@、EditTextTextView等……

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

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

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

        例如,如果您的 XML 是这样定义的:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-11-25
          • 1970-01-01
          • 1970-01-01
          • 2018-11-20
          • 2016-01-09
          • 2011-10-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多