0

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);
        } 

        }
4

2 回答 2

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。在这里查看:新布局小部件:空间和网格布局

于 2012-04-06T07:56:10.217 回答
0

我不熟悉 TableLayout,但您可以使用 LinearLayout 来使按钮大小相同。你可以有一个垂直的 LinearLayout 包装 4 个水平的 LinearLayout,每个都有 4 个内部具有相同布局权重的按钮。

示例线性布局:http: //developer.android.com/resources/tutorials/views/hello-linearlayout.html

于 2012-04-06T07:57:52.703 回答