Android LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot)的參數理解

方法inflate(int resource, ViewGroup root, boolean attachToRoot) 中java

第一個參數傳入佈局的資源ID,生成fragment視圖,第二個參數是視圖的父視圖,一般咱們須要父
視圖來正確配置組件。第三個參數告知佈局生成器是否將生成的視圖添加給父視圖。android

咱們新建一個項目測試一下:ide

activity_main.xml佈局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
 
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="helloworld" />
   
    <FrameLayout
        android:id="@+id/framelayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        
    </FrameLayout>
 
</LinearLayout>

 

fragment_main.xml:測試

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
 
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />
 
</LinearLayout>

 

MainActivity.java:第一種狀況沒有attachToRoot參數,默認告知佈局生成器將生成的視圖添加給父視圖,this

 1 public class MainActivity extends Activity {  2  3  @Override  4 protected void onCreate(Bundle savedInstanceState) {  5 super.onCreate(savedInstanceState);  6  setContentView(R.layout.activity_main);  7 ViewGroup vg = (ViewGroup) findViewById(R.id.framelayout);  8  View v = LayoutInflater.from(this).inflate(R.layout.fragment_main, vg);  9 // View v = LayoutInflater.from(this).inflate(R.layout.fragment_main, vg, false); 10 // View v = LayoutInflater.from(this).inflate(R.layout.fragment_main, vg, true); 11 12 13  } 14 15 16 }

第二種狀況:參數attachToRoot設爲false,不將生成的視圖(fragmnt_main)添加給父視圖(activity_main),spa

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ViewGroup vg = (ViewGroup) findViewById(R.id.framelayout);
//        View v  = LayoutInflater.from(this).inflate(R.layout.fragment_main, vg);
          View v = LayoutInflater.from(this).inflate(R.layout.fragment_main, vg, false);
//        View v = LayoutInflater.from(this).inflate(R.layout.fragment_main, vg, true);
    }
}

 

第三種狀況:參數attachToRoot設爲true,將生成的視圖(fragmnt_main)添加給父視圖(activity_main),code

public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewGroup vg = (ViewGroup) findViewById(R.id.framelayout); // View v = LayoutInflater.from(this).inflate(R.layout.fragment_main, vg); // View v = LayoutInflater.from(this).inflate(R.layout.fragment_main, vg, false);  View v = LayoutInflater.from(this).inflate(R.layout.fragment_main, vg, true); } }

相關文章
相關標籤/搜索