2015-11-04 100 views
0

我想创建一个带有16 x 16个按钮的GridLayout,但是我无法删除按钮之间的空格。GridLayout - 删除单元格之间的空格

我看到this但它没有工作。

这里是我现在想:

public class MyActivity extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.my_activity); 
    GridLayout v = (GridLayout)findViewById(R.id.myGrid); 
    v.setPadding(0, 0, 0, 0); 
    v.setUseDefaultMargins(false); 
    v.setAlignmentMode(GridLayout.ALIGN_BOUNDS); 
    v.setRowOrderPreserved(false); 
    Random r = new Random(); 
    for (int row = 0; row < 16; row++) 
     for (int col = 0; col < 16; col++) { 
      GridLayout.LayoutParams lp = new GridLayout.LayoutParams(); 
      lp.setMargins(0, 0, 0, 0); 
      lp.rowSpec = GridLayout.spec(row); 
      lp.columnSpec = GridLayout.spec(col); 
      lp.width = 40; 
      lp.height = 40; 
      Button b = new Button(this); 
      b.setWidth(40); 
      b.setHeight(40); 
      b.setText(Integer.toString(r.nextInt(10))); 
      b.setPadding(0, 0, 0, 0); 
      b.setLayoutParams(lp); 
      v.addView(b, lp); 
     } 
} 

截图 Screenshot

任何想法有什么不对?

编辑:我改变了一些按钮为绿色画面的背景是,这是我得到了什么:

Doh!

显然间距按钮图像的一部分...为什么Android的,为什么呢?

回答

0

因为您希望每个项目都有固定的宽度和固定的高度,所以在这里出现问题。试试这个:

GridLayout.LayoutParams lp = new GridLayout.LayoutParams(); 
      lp.setMargins(0, 0, 0, 0); 
      lp.rowSpec = GridLayout.spec(row); 
      lp.columnSpec = GridLayout.spec(col); 
      //lp.width = 40; 
      //lp.height = 40; 
      Button b = new Button(this); 
      //b.setWidth(40); 
      //b.setHeight(40); 
      b.setText(Integer.toString(r.nextInt(10))); 
      b.setPadding(0, 0, 0, 0); 
      b.setLayoutParams(lp); 
      v.addView(b, lp); 
} 
+0

我无法找到一个构造GridLayout.LayoutParams(INT,INT),但评论“lp.width = 40”,甚至将其设置为GridLayout.LayoutParams.WRAP_CONTENT并没有对我的工作。 –

+0

这个想法是你尝试设置固定的高度和宽度的按钮,所以它出错了。我没有尝试过,但可以删除所有固定的高度和宽度。请看我编辑的答案。 – NamNH