2015-11-04 127 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