安卓中静态和动态添加子 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的基本方法。静态添加适合固定布局,动态添加则提供了更大的灵活性。