使用View.inflate这两个视图的区别是什么

时间:2014-12-04 06:35:50

标签: android android-activity

以下是xml:welcome_view.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/root_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white" >

    <ImageView
        android:id="@+id/welcome_bg"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.demo.src.WelcomeLayout
        android:id="@+id/welcome_ad"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />    
</RelativeLayout>

这是MainActivity,我的setContentView布局为welcome_view.xml。

class MainActivity extends Activity
{
    onCreate()
    {
        setContentView(R.layout.welcome_view);
        ViewGroup view1 = findViewByID(R.id.ad_view);
    }
}

WelcomeLayout已包含在welcome_view.xml中。请告诉我以下课程中的观点与上面的课程不同???为什么,告诉我一些内在的机制。

class WelcomeLayout extends FrameLayout
{

  onCreate()
  {
      super(context);
      View.inflate(context, R.layout.welcome_view, null);
      ViewGroup view2 = findViewById(R.id.ad_view);
   }
}

谢谢!

1 个答案:

答案 0 :(得分:0)

参考:Difference between setContentView and LayoutInflater

setContentView仅是一种Activity方法。每个Activity都提供了一个带有ID&#34; @ + id / content&#34;的FrameLayout; (即内容视图)。您在setContentView中指定的任何视图都将是该Activity的视图。请注意,您还可以将视图实例传递给此方法,例如setContentView(new WebView(this));您正在使用的方法版本将在幕后为您充气。

另一方面,

有一个名为onCreateView的生命周期方法,它返回一个视图(如果有的话)。最常见的方法是用XML扩展视图并在此方法中返回它。在这种情况下,你需要自己充气。片段没有&#34; setContentView&#34;方法

注意:链接可能会被破坏,因此请回答粘贴。