Android LayoutInflater

布局加载

常规方法加载内容布局

//包裹 activity 对应的 FrameLayout 父布局,原内容布局根节点下 layout 属性生效
setContentView(R.layout.activity_main) 

或者

LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  

布局加载器加载布局

//获取布局加载器
LayoutInflater layoutInflater = LayoutInflater.from(context); 
//加载布局 resourceId:布局 id,root 指定父布局 容器布局调
//用 addView 添加子布局
layoutInflater.inflate(resourceId, root);

//root != null 并且 boolean 值为 true 时,被加载的布局的layout属性会生效
layoutInflater.inflate(resourceId, root,boolean);

布局加载器动态加载 Demo:

布局容器

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:id="@+id/main_layout"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent" >  
</LinearLayout>  

item 布局

<Button xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:text="Button" >  
</Button>  

动态加载布局

public class MainActivity extends Activity {  

    private LinearLayout mainLayout;  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        mainLayout = (LinearLayout) findViewById(R.id.main_layout);  
        LayoutInflater layoutInflater = LayoutInflater.from(this);  
        View buttonLayout = layoutInflater.inflate(R.layout.button_layout, null);  
        mainLayout.addView(buttonLayout);  
    }  

}  

guolin

坚持原创技术分享,您的支持将鼓励我继续创作!