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

问题描述:

对不起,我的标题可能不是很明确。在我开始之前,只想让你知道我在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格按钮(以后可能更改为文本字段)。但是,我似乎无法水平显示所有9个按钮,而无需专门设置按钮宽度。我如何创建一个视图的正方形网格,以编程方式按屏幕大小进行缩放?

+0

请提出您的标题问题。 –

检查这篇文章,知道如何转换像素DP:Set ImageView Size Programmatically in DP Java

,改变你的params.heightparams.width使用该方法与你的期望值。例如:

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

但是,这不仅仅是在尺寸相同但像素密度不同的显示器上缩放?或者这将适用于所有尺寸和像素密度? – Zorobay

+0

Dp应该在所有密度下都能正常工作。 DP表示密度像素。 –