Лучший и самый простой способ динамически установить кнопку - это
Button index=new Button(this);
int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 45, getResources().getDisplayMetrics());
int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 42, getResources().getDisplayMetrics());
Высота и ширина указаны в пикселях px . 45 - высота в dp , а 42 - ширина в dp .
index.setLayoutParams(new <Parent>.LayoutParams(width, height));
Так, например, если вы поместили свою кнопку в TableRow в TableLayout, вы должны иметь ее как TableRow.LayoutParams
index.setLayoutParams(new TableRow.LayoutParams(width, height));