当前位置: 首页 > news >正文

安卓中静态和动态添加子 View 到容器

1.静态添加子View

在XML布局文件中直接定义子View:

<!-- activity_main.xml -->
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/container"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><!-- 静态添加的TextView --><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="静态添加的文本"android:padding="16dp"/>
</LinearLayout>

2.动态添加子View,主要是addView()方法(- addView() 内部会调用 requestLayout() + invalidate(),强制容器更新 UI。)

在Java代码中动态创建并添加子View:

// MainActivity.java
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取容器LinearLayout container = findViewById(R.id.container);// 创建TextViewTextView dynamicTextView = new TextView(this);dynamicTextView.setText("动态添加的文本");dynamicTextView.setPadding(16, 16, 16, 16);// 创建布局参数LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);// 添加子View到容器container.addView(dynamicTextView, params);}
}

关键区别

方式静态添加动态添加
实现位置XML布局文件Java/Kotlin代码
灵活性低(编译后无法修改)高(运行时可动态调整)
适用场景布局固定的组件需动态生成UI(如列表、表单)
性能加载快(无需运行时处理)加载稍慢(需运行时创建)

以上示例展示了安卓中静态和动态添加子View的基本方法。静态添加适合固定布局,动态添加则提供了更大的灵活性。


文章转载自:
http://bastardry.zzyjnl.cn
http://bowdlerism.zzyjnl.cn
http://belock.zzyjnl.cn
http://cervical.zzyjnl.cn
http://ablation.zzyjnl.cn
http://addlepate.zzyjnl.cn
http://alodium.zzyjnl.cn
http://albertite.zzyjnl.cn
http://apres.zzyjnl.cn
http://chartography.zzyjnl.cn
http://barabara.zzyjnl.cn
http://choice.zzyjnl.cn
http://benevolence.zzyjnl.cn
http://calumniatory.zzyjnl.cn
http://baize.zzyjnl.cn
http://casual.zzyjnl.cn
http://barreled.zzyjnl.cn
http://apprentice.zzyjnl.cn
http://banffshire.zzyjnl.cn
http://arigato.zzyjnl.cn
http://autofining.zzyjnl.cn
http://ascanius.zzyjnl.cn
http://bimorphemic.zzyjnl.cn
http://banka.zzyjnl.cn
http://aegisthus.zzyjnl.cn
http://capricornian.zzyjnl.cn
http://assuan.zzyjnl.cn
http://catatonia.zzyjnl.cn
http://caprifoliaceous.zzyjnl.cn
http://brahmacharya.zzyjnl.cn
http://www.dtcms.com/a/261305.html

相关文章:

  • Flutter基础(FFI)
  • Docker安装MinIO
  • 碰一碰发视频/碰一碰发抖音技术--源码开发部署实现方案
  • NVIDIA 开源高性能语音识别模型:Parakeet TDT 0.6B V2 登顶 OpenASR 榜单
  • DeepSeek 桌面端 快捷键唤起小窗口 极致轻量化
  • JavaScript正则表达式之正向先行断言(Positive Lookahead)深度解析
  • 黑马python(十七)
  • 电子电气架构 --- 车载芯片SOC简介
  • MyComic动漫+漫画+小说三合一 v1.9.2 纯净版
  • 北大肖臻《区块链技术与应用》学习笔记
  • MyBatis深度面试指南之三
  • 数据结构1 ——数据结构的基本概念+一点点算法
  • Java Optional 详解:优雅处理空指针异常
  • 【Docker基础】Docker容器管理:docker stats及其参数详解
  • 【笔记】 Docker目录迁移脚本
  • centos指令
  • 现代串口通讯UI框架性能对比
  • 机器人磁性夹具如何选?IXTUR气控永磁铁 MAP/MRP/LI-120系列负载能力与适用场景解析
  • 开源项目推荐:MCP Registry——管理MCP服务器的利器
  • Vue.js 中的 v-model 和 :value:理解父子组件的数据绑定
  • Python 可迭代的对象、迭代器 和生成器(何时使用生成器表达式)
  • Linux基本指令篇 —— more指令
  • Linu压缩解压
  • 平台组成-报表平台
  • 从台式电脑硬件架构看前后端分离开发模式
  • FPGA设计的用户约束
  • 基于微信小程序的旅游景点推荐设计与实现
  • PG靶机复现 Squid
  • ARM64 linux系统的一般执行过程
  • ​​Git提交代码Commit消息企业级规范