一手遮天 Android - view(布局类): setContentView() 和 addContentView()

项目地址 https://github.com/webabcd/AndroidDemo
作者 webabcd

一手遮天 Android - view(布局类): setContentView() 和 addContentView()

示例如下:

/view/layout/ContentViewDemo1.java

/**
 * 演示 setContentView() 和 addContentView() 的用法
 */

package com.webabcd.androiddemo.view.layout;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;

import com.webabcd.androiddemo.R;

public class ContentViewDemo1 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // 通过指定资源文件 id 的方式设置当前 activity 的布局(这就是最常见的方式,就不说了)
        // setContentView(int layoutResID);

        // 通过指定 view 的方式设置当前 activity 的布局
        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setBackgroundColor(Color.GREEN);
        ViewGroup.LayoutParams params1 = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        setContentView(linearLayout, params1);

        // 通过指定 view 的方式为当前的 activity 添加布局
        Button button = new Button(this);
        button.setText("webabcd");
        ViewGroup.LayoutParams params2 = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        addContentView(button, params2);

        /*
         * 运行本例之后,你打开 Layout Inspector 会看到如下文档结构(LinearLayout 和 Button 在文档结构上是平级的)
         * ContentFrameLayout - 这个是 activity 的父容器
         *   LinearLayout - 这个是你通过 setContentView(linearLayout, params1); 设置的布局
         *   Button - 这个是你通过 addContentView(button, params2); 添加的布局
         */
    }
}

项目地址 https://github.com/webabcd/AndroidDemo
作者 webabcd

上一篇:Android面试中常问的MMAP到底是啥东东?看这一篇就够了!


下一篇:Github标星5.3K,啃下这些Framework技术笔记,经典好文