如何使表格布局屏幕独立

时间:2012-04-06 07:35:43

标签: java android

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

        }

2 个答案:

答案 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