android - 明智地动态创建按钮行列
问题描述
我对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++;
}
}
}
}
解决方案
有多种方法可以实现这一点,到目前为止,您是新手,但您对 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);
}
}
我已经评论了这些行,所以你可以理解!
推荐阅读
- python - AttributeError:“NoneType”对象没有“发送”属性
- java - Java 更新现有 Excel 文件
- acumatica - 如何为开箱即用的销售订单实体添加属性支持?
- chef-infra - 是否有任何节点包(npm)可以让knife 引导节点?
- javascript - 对象文字符号中的方法记录到控制台但也记录未定义
- maven - 无法使用父 POM 运行 Liquibase Maven 插件
- google-cloud-platform - Google 的 AutoML 可以导出训练有素的模型以进行离线推理吗?
- mysql - 查找满足条件的范围
- javascript - 监听 Web Worker 的创建?
- android - 我们可以使用 RecyclerView 行项上的内置 setOnClickListener 代替自定义项单击侦听器吗?