首页 > 解决方案 > 明智地动态创建按钮行列

问题描述

我对Android很陌生。我正在尝试在 android 中动态创建按钮。

但是所有按钮都按列垂直列出。我希望 25 个按钮分布在 5 行和 5 列中。

package com.sudarshan.tictactoenew;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.DynamicLayout;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.Toast;

public class NumericalNextLevel extends AppCompatActivity {

    @Override



    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_numerical_next_level);
        createLayoutDynamically(5);
    }

    private void createLayoutDynamically(int n) {

        int count=0;
        for (int i = 0; i < n; i++)
        {
            for(int j=0;j<n;j++)
            {
                Button myButton = new Button(this);
                myButton.setText("");
                myButton.setId(count);

                final int id_ = myButton.getId();

                LinearLayout layout = (LinearLayout) findViewById(R.id.myDynamicLayout);
                layout.addView(myButton);

                myButton.setLayoutParams(new LayoutParams(50, LayoutParams.WRAP_CONTENT));
                count++;
            }


        }
    }

}

标签: android

解决方案


有多种方法可以实现这一点,到目前为止,您是新手,但您对 Linea 布局的工作原理有所了解,所以我在此处发布带有线性布局的代码!

在开始编写代码之前,让我们先了解一下它是如何工作的,如果您只使用线性布局进行布局,可能会很麻烦,因为线性布局将组件设置为垂直或水平等单一方向。但是我们可以在一个垂直线性布局中添加多个水平线性布局,然后它会像魅力一样工作!

这是我想说的粗略图!

在此处输入图像描述

我已经修改了你的功能如下!

 private void createLayoutDynamically(int n) {

        int count=0;
        LinearLayout layout = (LinearLayout) findViewById(R.id.myDynamicLayout); //Main Vertical Linear Layout
        layout.setOrientation(LinearLayout.VERTICAL); //Setting that LinearLayout as Vertical

        for (int i = 0; i < n; i++)
        {
            LinearLayout row=new LinearLayout(this); //new Horizontal LinearLayout
            row.setOrientation(LinearLayout.HORIZONTAL); //keeping this layout's orientation horizontal
            row.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); //setting it's width and Height

            for(int j=0;j<n;j++)
            {
                Button myButton = new Button(this);
                myButton.setLayoutParams(new LayoutParams(50, LayoutParams.WRAP_CONTENT));
                myButton.setText("");
                myButton.setId(count);
                final int id_ = myButton.getId();
                row.addView(myButton);
                count++;
            }
            
            //Once Button Added to Horizontal Row add it back to Vertical Linearlayout
            layout.addView(row);

        }
    }

我已经评论了这些行,所以你可以理解!


推荐阅读