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 を使用することもできます。こちらをご覧ください:新しいレイアウト ウィジェット: Space と GridLayout

于 2012-04-06T07:56:10.217 に答える
0

私は TableLayout に精通していませんが、LinearLayout を使用してボタンを同じサイズにすることができます。4 つの水平 LinearLayout をラップする 1 つの垂直 LinearLayout を持つことができます。これらのそれぞれには、同じレイアウトの重みを持つ 4 つのボタンがあります。

LinearLayout の例: http://developer.android.com/resources/tutorials/views/hello-linearlayout.html

于 2012-04-06T07:57:52.703 に答える