android 动态添加按钮

一、创建基础布局文件(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码熊崽的编程森林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值