1.这是我的代码,我试图在表格布局的帮助下显示按钮矩阵。我也试图使这个矩阵屏幕独立但这不能正常工作。在大尺寸模拟器它给予问题按钮重叠。
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);
}
}
答案 0 :(得分:1)
您正在以奇怪的方式设置布局参数。尝试使用:
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。请在此处查看:New Layout Widgets: Space and GridLayout
答案 1 :(得分:0)
我不熟悉TableLayout,但你可以通过LinearLayout使按钮大小相同。你可以有一个垂直的LinearLayout包装4个水平的LinearLayouts,每个都有4个按钮,里面有相同的布局重量。
示例LinearLayout:http://developer.android.com/resources/tutorials/views/hello-linearlayout.html