Android 复选框对齐

Android 复选框对齐,android,Android,我想在一行中实现5个复选框,并在另一行下面实现3个这样的行。 附加是图像。 如何使用复选框、LinearLayout和TableRow进行设置? 所有复选框都是使用字符串数组动态创建的,而不是在布局xml文件中 我尝试了以下方法: int i = 0; while(i < 15) { TableRow tr = new TableRow(this); CheckBox[] cb = new CheckBox[5]; for (int j = 0; j < 5;

我想在一行中实现5个复选框,并在另一行下面实现3个这样的行。 附加是图像。

如何使用复选框、LinearLayout和TableRow进行设置? 所有复选框都是使用字符串数组动态创建的,而不是在布局xml文件中

我尝试了以下方法:

int i = 0; 
while(i < 15) { 
  TableRow tr = new TableRow(this); 
  CheckBox[] cb = new CheckBox[5]; 
  for (int j = 0; j < 5; j++,i++) { 
       cb[j] = new CheckBox(this); cb[j].setText(arrLetters[i]);
       cb[j].setHeight(80); 
       cb[j].setWidth(250); 
       cb[j].setId(i); 
       tr.addView(cb[j]); 
  } 
  linearLayout.addView(tr); 
inti=0;
而(i<15){
TableRow tr=新的TableRow(本);
复选框[]cb=新复选框[5];
对于(int j=0;j<5;j++,i++){
cb[j]=new复选框(this);cb[j].setText(arrLetters[i]);
cb[j].设定高度(80);
cb[j].设定宽度(250);
cb[j].setId(i);
tr.addView(cb[j]);
} 
线性布局。添加视图(tr);

阿披舍克

要实现这一点,你并不需要一个
表格行
。你可以像这样使用
线性布局

  • 创建1水平
    LinearLayout
  • 5垂直
    LinearLayout
    s添加到水平布局
  • 3
    复选框添加到每个垂直布局
  • 将每个垂直布局的权重设置为1
  • 将每个
    复选框的权重设置为1
  • 示例

    动态创建
    LinearLayout

    LinearLayout linLayout = new LinearLayout(this);
    // specifying vertical or horizontal orientation
    linLayout.setOrientation(LinearLayout.VERTICAL);
    // creating LayoutParams  
    LayoutParams linLayoutParam = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f);
    
    CheckBox checkBox = new CheckBox(this);
    // add other attributes like id and Params for the weight..etc
    linLayout.addView(checkBox, linLayoutParam);
    
    创建
    复选框
    并将其动态添加到
    线性布局

    LinearLayout linLayout = new LinearLayout(this);
    // specifying vertical or horizontal orientation
    linLayout.setOrientation(LinearLayout.VERTICAL);
    // creating LayoutParams  
    LayoutParams linLayoutParam = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f);
    
    CheckBox checkBox = new CheckBox(this);
    // add other attributes like id and Params for the weight..etc
    linLayout.addView(checkBox, linLayoutParam);
    

    工作实施(示例)

    导入android.graphics.Color;
    导入android.support.v7.app.AppActivity;
    导入android.os.Bundle;
    导入android.view.Gravity;
    导入android.widget.CheckBox;
    导入android.widget.LinearLayout;
    公共类MainActivity扩展了AppCompatActivity{
    @凌驾
    创建时受保护的void(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    线性布局水平布局=新的线性布局(本);
    水平布局。设置方向(线性布局。水平);
    LinearLayout.LayoutParams LayoutParams=新的LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_父级,LinearLayout.LayoutParams.MATCH_父级,1.0f);
    水平布局。设置重力(重力。中心);
    setContentView(水平布局、布局参数);
    int[]colors=newint[]{Color.BLUE,Color.WHITE,Color.RED,Color.GRAY,Color.GREEN};
    LinearLayout[]列=新的LinearLayout[5];
    
    对于(int i=0;i输出

    JAVA代码

        LinearLayout ll_Main = findViewById(R.id.root_lay); //Root Layout in XML File
    
        /*Custom Layout*/
    
        LinearLayout root_Layout = new LinearLayout(this);
        root_Layout.setOrientation(LinearLayout.VERTICAL);
        LinearLayout.LayoutParams root_Params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
        root_Layout.setLayoutParams(root_Params);
    
        LinearLayout root_Base1 = new LinearLayout(this);
        root_Base1.setOrientation(LinearLayout.HORIZONTAL);
        LinearLayout.LayoutParams base_Params1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
        base_Params1.setMargins(10,10,10,10);
        root_Base1.setLayoutParams(base_Params1);
        root_Base1.setWeightSum(5.0f);
    
        CheckBox box1 = new CheckBox(this);
        box1.setText("A");
        LinearLayout.LayoutParams box1_Params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT);
        box1_Params.weight = 1;
        box1.setLayoutParams(box1_Params);
    
        CheckBox box2 = new CheckBox(this);
        box2.setText("B");
        LinearLayout.LayoutParams box2_Params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT);
        box2_Params.weight = 1;
        box2.setLayoutParams(box1_Params);
    
        CheckBox box3 = new CheckBox(this);
        box3.setText("C");
        LinearLayout.LayoutParams box3_Params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT);
        box3_Params.weight = 1;
        box3.setLayoutParams(box1_Params);
    
        CheckBox box4 = new CheckBox(this);
        box4.setText("D");
        LinearLayout.LayoutParams box4_Params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT);
        box4_Params.weight = 1;
        box4.setLayoutParams(box1_Params);
    
        CheckBox box5 = new CheckBox(this);
        box5.setText("E");
        LinearLayout.LayoutParams box5_Params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT);
        box5_Params.weight = 1;
        box5.setLayoutParams(box1_Params);
    
        root_Base1.addView(box1);
        root_Base1.addView(box2);
        root_Base1.addView(box3);
        root_Base1.addView(box4);
        root_Base1.addView(box5);
        root_Layout.addView(root_Base1);
    
        LinearLayout root_Base2 = new LinearLayout(this);
        root_Base2.setOrientation(LinearLayout.HORIZONTAL);
        LinearLayout.LayoutParams base_Params2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
        base_Params2.setMargins(10,10,10,10);
        root_Base2.setLayoutParams(base_Params2);
        root_Base2.setWeightSum(5.0f);
    
        CheckBox box6 = new CheckBox(this);
        box6.setText("F");
        LinearLayout.LayoutParams box6_Params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT);
        box6_Params.weight = 1;
        box6.setLayoutParams(box6_Params);
    
        CheckBox box7 = new CheckBox(this);
        box7.setText("G");
        LinearLayout.LayoutParams box7_Params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT);
        box7_Params.weight = 1;
        box7.setLayoutParams(box7_Params);
    
        CheckBox box8 = new CheckBox(this);
        box8.setText("H");
        LinearLayout.LayoutParams box8_Params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT);
        box8_Params.weight = 1;
        box8.setLayoutParams(box8_Params);
    
        CheckBox box9 = new CheckBox(this);
        box9.setText("I");
        LinearLayout.LayoutParams box9_Params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT);
        box9_Params.weight = 1;
        box9.setLayoutParams(box9_Params);
    
        CheckBox box10 = new CheckBox(this);
        box10.setText("J");
        LinearLayout.LayoutParams box10_Params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT);
        box10_Params.weight = 1;
        box10.setLayoutParams(box10_Params);
    
        root_Base2.addView(box6);
        root_Base2.addView(box7);
        root_Base2.addView(box8);
        root_Base2.addView(box9);
        root_Base2.addView(box10);
        root_Layout.addView(root_Base2);
    
        ll_Main.addView(root_Layout);
    
        /*Custom Layout*/
    

    我尝试了以下操作,位无法实现I=0;而(I<15){TableRow tr=new TableRow(this);CheckBox[]cb=new CheckBox[5];for(int j=0;j<5;j++,I++){cb[j]=new CheckBox(this);cb[j].setText(arrrlets[I]);cb[j] .setHeight(80);cb[j].setWidth(250);cb[j].setId(i);tr.addView(cb[j]);}linearLayout.addView(tr);要实现什么?根据屏幕大小,每行或换行需要固定5个复选框。