I need to place a grid in the center of a RelativeLayout, but I don't want to use Gravity just because I need to put it on a specific position, using leftMargin and topMargin.
The grid is made using two LinearLayout's
I tried using this code, but I see the grid on the top left corner of the screen:
RelativeLayout fl = new RelativeLayout(this);
RelativeLayout.LayoutParams flp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.MATCH_PARENT);
fl.setLayoutParams(flp);
fl.setBackgroundResource(R.drawable.background);
//Linear Layout to contain grid rows
LinearLayout grid_layout = new LinearLayout(this);
LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
llp.leftMargin = (int)Util.convertDpToPixel(200, this);
llp.topMargin = (int)Util.convertDpToPixel(200, this);
//Set Params
grid_layout.setOrientation(LinearLayout.VERTICAL);
grid_layout.setId(12);
fl.addView(grid_layout, llp);
Log.d("Display", "" + grid_layout.getHeight());
//LinearLayout(s) ROWS
for (int i = 0; i < 4; i++)
{
LinearLayout ll = new LinearLayout(this);
llp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
ll.setLayoutParams(llp);
grid_layout.addView(ll);
//Cells
for (int j = 0; j < 4; j++) //Creating 4 cell blocks in a row
{
TextView tv = new TextView(this);
tv.setBackgroundResource(R.drawable.cell_shape);
tv.setHeight((int)Util.convertDpToPixel(42, this));
tv.setWidth((int)Util.convertDpToPixel(42, this));
ll.addView(tv);
grid[i][j] = new CellBlock(grid, i, j, tv, null); //Building the game grid
}
}
It seems that these two lines:
llp.leftMargin = (int)Util.convertDpToPixel(200, this);
llp.topMargin = (int)Util.convertDpToPixel(200, this);
does not work! Why it keep to place the grid in the top left corner?
Thank you