Android中使用代码动态添加子 view
Posted 邹奇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中使用代码动态添加子 view相关的知识,希望对你有一定的参考价值。
背景
因为不能影响其他渠道,所以需要在对应渠道里使用代码动态添加子 view
。
布局文件
简单的写了个 demo
记录下,这里父容器使用 RelativeLayout
。布局文件代码如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="@+id/rootView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:text="imxiaoqiXxx"
android:textColor="@android:color/black"
android:textSize="26sp"
android:textStyle="bold"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
显示如下:
添加子 View
代码也相对简单,如下:
package com.example.addviewdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
public class MainActivity extends AppCompatActivity {
private ProgressBar bar;
private RelativeLayout rootView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addChild();
}
private void addChild() {
// 获取要添加子 view 的父容器
if (rootView == null){
rootView = findViewById(R.id.rootView);
}
// 创建要添加的子 view(这里拿 ProgressBar 来做说明)
if (bar == null){
bar = new ProgressBar(this);
}
// 因为子 view 要添加到父容器 RelativeLayout 中,所以这里布局参数使用 RelativeLayout.LayoutParams
RelativeLayout.LayoutParams params = new RelativeLayout
.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
// 设置子 view 与父容器左下对齐(RelativeLayout.LayoutParams 独有)
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
// 设置子 view 的左下 margin
params.leftMargin = 60;
params.bottomMargin = 60;
// 子 view 设置布局参数
bar.setLayoutParams(params);
// 添加子 view
rootView.addView(bar);
}
}
因为注释已经写的很清楚了,所以不再另作说明。
再次运行看下效果如下:
可以看到添加成功了,左下角显示了圆形进度条控件。
算了,还是抽根烟装逼吧!同学们再见!
技术永不眠!我们下期见!
以上是关于Android中使用代码动态添加子 view的主要内容,如果未能解决你的问题,请参考以下文章
LinearLayout系列:LinearLayout动态添加子View
Android 怎么将fragment 动态地添加到布局中的任意位置?
Android 逆向Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 二 | 准备参数 | 远程调用 mmap 函数 )(代码片
Android 逆向修改运行中的 Android 进程的内存数据 ( 运行环境搭建 Android 模拟器安装 | 拷贝 Android 平台可执行文件和动态库到 /data/system )(代码片