一、创建基础布局文件(activity_main.xml)
首先创建一个简单的根布局,这里使用FrameLayout作为根布局容器,后续将在MainActivity类中动态添加其他布局到这个根布局里,示例代码如下:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
</FrameLayout>
二、在 MainActivity.java 中编写动态添加布局、按钮及添加点击事件的代码
package com.example.dynamiclayout;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.util.TypedValue;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1. 获取根布局容器(FrameLayout)
FrameLayout rootLayout = findViewById(R.id.root_layout);
// 2. 创建最外层LinearLayout并设置相关属性
LinearLayout outerLinearLayout = new LinearLayout(this);
outerLinearLayout.setOrientation(LinearLayout.HORIZONTAL);
outerLinearLayout.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
));
// 3. 定义每个内层LinearLayout中按钮数量的数组
int[] buttonCountsPerInnerLinearLayout = {5, 2, 4, 3, 1};
// 4. 循环添加5个内层LinearLayout及其包含的按钮
for (int innerLayoutIndex = 0; innerLayoutIndex < 5; innerLayoutIndex++) {
// 4.1 创建内层LinearLayout(每个内层的容器)并设置为垂直方向
LinearLayout innerLinearLayout = new LinearLayout(this);
innerLinearL


437

被折叠的 条评论
为什么被折叠?



