1.这是我的代码,我试图在表格布局的帮助下显示按钮矩阵。我也试图使这个矩阵屏幕独立,但这在大尺寸模拟器 properly.in 不起作用,它给问题按钮重叠
。 TableLayout layout = new TableLayout (this);
layout.setStretchAllColumns(true);
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
layout.setLayoutParams( new TableLayout.LayoutParams(height,width) );
layout.setPadding(1,1,1,1);
for (int f=0; f<=3; f++)
{
TableRow tr = new TableRow(this);
for (int c=0; c<=3; c++)
{
Button b = new Button (this);
b.setText(""+f+c);
b.setTextSize(10.0f);
b.setTextColor(Color.rgb( 100, 200, 200));
tr.addView(b,30,30);
final float scale = getBaseContext().getResources().getDisplayMetrics().density;
int pixels = (int) (dps * scale + 0.5f);
b.setHeight(pixels);
b.setWidth(pixels);
} // for
layout.addView(tr);
} // for
super.setContentView(layout);
}
}
您正在以奇怪的方式设置布局参数。尝试使用:
layout.setLayoutParams( new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
按钮也有同样的问题。尝试使用这个:
Button b = new Button (this);
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER; // if you want it centered
params.span = 1;
b..setLayoutParams(params);
b.setText(""+f+c);
b.setTextSize(10.0f);
b.setTextColor(Color.rgb( 100, 200, 200));
tr.addView(b);
并且不要使用"比例"设置高度和宽度值。params.span = 1;
部分应为表行中的每个元素提供相同的宽度。params.gravity = Gravity.CENTER;
会将其居中放在表格单元格中。
或者你可以使用 GridLayout。在此处查看: 新的布局小部件:空间和网格布局
熟悉TableLayout,但是您可以使用LinearLayout使按钮具有相同的大小。你可以有一个垂直的线性布局包装4个水平的线性布局,每个都有4个按钮,里面的布局权重相同。
线性布局示例:http://developer.android.com/resources/tutorials/views/hello-linearlayout.html