2016-08-03 114 views
1

我可以創建合併單元格,並通過XML行跨度選項, 一個網格佈局,但是當我想以編程它不工作做同樣的事情,這是我的代碼Android的網格佈局編程方式與合併單元格和行跨度

int column = 3; 
    int row = 3; 
    gridLayout.setColumnCount(column); 
    gridLayout.setRowCount(row); 
    Button btn1 = new Button(this); 
    btn1.setBackgroundColor(Color.BLUE); 
    btn1.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
    GridLayout.LayoutParams lParams = new GridLayout.LayoutParams(btn1.getLayoutParams()); 
    lParams.rowSpec = GridLayout.spec(0, 2); 
    lParams.columnSpec = GridLayout.spec(0, 3); 
    gridLayout.addView(btn1,lParams); 

enter image description here

回答

0

試試下面的代碼

int row= 3; 
int column = 3; 
int row = row/ column; 
gridLayout.setColumnCount(column); 
gridLayout.setRowCount(row + 1); 
for(int i =0, c = 0, r = 0; i < total; i++, c++) 
{ 
    if(c == column) 
    { 
     c = 0; 
     r++; 
    } 
    Button btn1= new Button(this); 
    //If required set image other wise leave it 
    btn1.setImageResource(R.drawable.ic_launcher); 

    GridLayout.LayoutParams param =new GridLayout.LayoutParams(); 
    param.height = LayoutParams.WRAP_CONTENT; 
    param.width = LayoutParams.WRAP_CONTENT; 
    param.rightMargin = 5; 
    param.topMargin = 5; 
    param.setGravity(Gravity.CENTER); 
    param.columnSpec = GridLayout.spec(c); 
    param.rowSpec = GridLayout.spec(r); 
    btn1.setLayoutParams (param); 
    gridLayout.addView(oImageView); 
} 
+0

感謝您的回答,在我來說,我並不需要使用循環我想創建索姆e視圖並將它們添加到具有特定行,列和行跨度的網格佈局,colspan。其他單元格將爲空白。 – StraightforwardDev

相關問題