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的基本方法。靜態添加適合固定布局,動態添加則提供了更大的靈活性。