LayoutInflater inflate方法的使用

如何使用LayoutInflater inflate为容器添加xml布局
Demo下载

在这里插入图片描述

下图是android 官方文档对inflate的解释

从指定的xml资源中扩展新的视图层次结构。我们通过使用的是三参数inflate
在这里插入图片描述
activity_main.xml
创建主布局activity_main,三个LinearLayout分别用于第三个参数true,flase和第二参数null的使用

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.administrator.inflate.MainActivity"
    android:orientation="vertical">
    
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:id="@+id/main_ll"
        android:background="@color/colorAccent">
    </LinearLayout>
    
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:id="@+id/main_ll2"
        android:background="@color/colorAccent">
    </LinearLayout>
    
     <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:id="@+id/main_ll3"
        android:background="@color/colorAccent">
    </LinearLayout>

</LinearLayout>

ly.xml
创建ly.xml文件,这个布局文件就是添加到activity_main布局中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ll"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:background="@color/colorPrimary"
    android:gravity="center"
    android:orientation="vertical">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"/>
</LinearLayout>

MainActivity.java
当第三个参数为true时,会自动将第一个参数所指定的View添加到第二个参数所指定的View中。
当第三个参数为false时,表示不将第一个参数所指定的View添加到root中
当root为null表示我不需要将第一个参数所指定的布局添加到任何容器中,同时也表示没有任何容器来来协助第一个参数所指定布局的根节点生成布局参数

package com.example.administrator.inflate;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {

    LinearLayout ll;
    LinearLayout ll2;
    LinearLayout ll3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ll=(LinearLayout)findViewById(R.id.main_ll);
        ll2=(LinearLayout)findViewById(R.id.main_ll2);
        ll3=(LinearLayout)findViewById(R.id.main_ll3);

        View view=LayoutInflater.from(this).inflate(R.layout.ly,ll,true);//第三个参数为TRUE
        View view2=LayoutInflater.from(this).inflate(R.layout.ly,ll2,false);//第三个参数为FALSE  如果参数为true则报错,不主动添加到root中
        View View3=LayoutInflater.from(this).inflate(R.layout.ly,null,false);//第二个参数为null,它的根节点的宽高属性会失效

        ll2.addView(view2);
        ll3.addView(View3);
    }
}

demo下载
更加全面、正确的信息请参考以下两位大神博客
推荐博客1
推荐博客2

猜你喜欢

转载自blog.csdn.net/weixin_42362496/article/details/85258907
今日推荐