当前位置: 首页 > 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://www.lryc.cn/news/576273.html

相关文章:

  • 【C/C++】单元测试实战:Stub与Mock框架解析
  • 【RAG面试题】LLMs已经具备了较强能力,存在哪些不足点?
  • Windows11系统上安装WM虚拟机及Ubuntu 22.04系统
  • clion与keil分别配置项目宏定义
  • Day44 预训练模型
  • FLUX.1 Kontext(Dev 版)训练lora基础教程
  • Python基础知识之文件
  • 什么是故障注入测试
  • SCSAI万物对象模型和五维市场交易平台原型
  • mongodb生产备份工具PBM
  • Selenium基本用法
  • 深入剖析 CVE-2021-3560 与 CVE-2021-4034:原理、区别与联系
  • 智能助手(利用GPT搭建智能系统)
  • Vivado 五种仿真类型的区别
  • Javaweb - 6 BOM 编程 和 DOM 编程
  • python打卡day56
  • VUE使用过程中的碰到问题记录
  • 【深度学习新浪潮】MoE技术入门(简要版)
  • Linux基本指令篇 —— tac指令
  • Apache Kafka 面试应答指南
  • 黑马JVM解析笔记(五):深入理解Java字节码执行机制
  • python训练day43 复习日
  • 10【认识文件系统】
  • 基于springboot的火锅店点餐系统
  • 遥感图像语义分割1-安装mmsegmentation
  • 人工智能-基础篇-2-什么是机器学习?(ML,监督学习,半监督学习,零监督学习,强化学习,深度学习,机器学习步骤等)
  • Python Selenium 滚动到特定元素
  • .NET MAUI跨平台串口通讯方案
  • 【github】从本地更新仓库里的文件笔记
  • C++基础:动态内存分配、输入输出与命名空间详解