在网格中以编程方式设置按钮大小

时间:2016-03-06 22:05:14

标签: android android-layout grid-layout

对不起我的头衔,可能不是很明确。在开始之前,我想告诉您我是Android编程的新手。

所以,我想要创建的是一个数独板。它不一定是花哨的,我宁愿保持简单。到目前为止,这是我的onCreate方法:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    GridLayout gridLayout = (GridLayout) findViewById(R.id.gridLayout);

    for (int col = 0; col < 9; col++) {
        for (int row = 0; row < 9; row++) {
            Button b = new Button(this);
            String text = row + "," + col;
            b.setText(text);
            b.setMinHeight(0);
            b.setMinWidth(0);
            b.setPadding(0,0,0,0);

            GridLayout.LayoutParams params = new GridLayout.LayoutParams();
            params.setMargins(0,0,0,0);
            params.height = LayoutParams.WRAP_CONTENT;
            params.width = LayoutParams.WRAP_CONTENT;
            params.setGravity(Gravity.CENTER);
            params.columnSpec = GridLayout.spec(col);
            params.rowSpec = GridLayout.spec(row);

            b.setLayoutParams(params);
            b.setId(row * 10 + col);
            b.setOnClickListener(this);
            gridLayout.addView(b);
        }
    }
}

我只想创建一个9乘9的按钮网格(稍后可能会更改为TextField)。但是,如果没有专门设置按钮宽度,我似乎无法水平显示所有9个按钮。如何创建一个以编程方式缩放屏幕尺寸的方形网格?

1 个答案:

答案 0 :(得分:1)

查看此文章,了解如何将像素转换为dp:Set ImageView Size Programmatically in DP Java

并更改您的params.heightparams.width,将该方法与您想要的值一起使用。例如:

dpToPx(25); //size will be 25p