回答編集履歴
3
修正
    
        answer	
    CHANGED
    
    | @@ -1,11 +1,11 @@ | |
| 1 | 
            -
            ご提示頂いたコードとレイアウトを新規作成したプロジェクトの MainActivity.java と activity_main.xml に張り付け、いつも使っている  | 
| 1 | 
            +
            ご提示頂いたコードとレイアウトを新規作成したプロジェクトの MainActivity.java と activity_main.xml に張り付け、いつも使っている Pixel 6 API 30 のエミュレータで setText をコメントにした/しない場合の実行時画面をキャプチャして "ペイント" でそれぞれを 25% に縮小後並べました。
         | 
| 2 2 | 
             
            
         | 
| 3 3 | 
             
            赤線は並べた後に書き込んだものです。
         | 
| 4 4 | 
             
            目立った違いは無さそうです。
         | 
| 5 5 |  | 
| 6 6 | 
             
            ---
         | 
| 7 7 |  | 
| 8 | 
            -
            ついでに(?) GridLayout へのボタンの設定は alignment=CENTER,  weight=1f とすることで各枠を GridLayout の幅/高さを等分に分けた大きさに出来ますので、マージンを計算・設定しなくて済むのではないでしょうか。(実際の大きさが決まるのを待つ必要が無くなるので post もせずに済みますし。)
         | 
| 8 | 
            +
            ついでに(?) GridLayout へのボタンの設定は row/column とも alignment=CENTER,  weight=1f とすることで各枠を GridLayout の幅/高さを等分に分けた大きさにした上でボタンを中央に出来ますので、マージンを計算・設定しなくて済むのではないでしょうか。(実際の大きさが決まるのを待つ必要が無くなるので post もせずに済みますし。)
         | 
| 9 9 | 
             
            ```java
         | 
| 10 10 | 
             
              @Override
         | 
| 11 11 | 
             
              protected void onCreate(Bundle savedInstanceState) {
         | 
2
修正
    
        answer	
    CHANGED
    
    | @@ -2,7 +2,9 @@ | |
| 2 2 | 
             
            
         | 
| 3 3 | 
             
            赤線は並べた後に書き込んだものです。
         | 
| 4 4 | 
             
            目立った違いは無さそうです。
         | 
| 5 | 
            +
             | 
| 5 6 | 
             
            ---
         | 
| 7 | 
            +
             | 
| 6 8 | 
             
            ついでに(?) GridLayout へのボタンの設定は alignment=CENTER,  weight=1f とすることで各枠を GridLayout の幅/高さを等分に分けた大きさに出来ますので、マージンを計算・設定しなくて済むのではないでしょうか。(実際の大きさが決まるのを待つ必要が無くなるので post もせずに済みますし。)
         | 
| 7 9 | 
             
            ```java
         | 
| 8 10 | 
             
              @Override
         | 
1
追加
    
        answer	
    CHANGED
    
    | @@ -1,4 +1,38 @@ | |
| 1 1 | 
             
            ご提示頂いたコードとレイアウトを新規作成したプロジェクトの MainActivity.java と activity_main.xml に張り付け、いつも使っている Pixcel 6 API 30 のエミュレータで setText をコメントにした/しない場合の実行時画面をキャプチャして "ペイント" でそれぞれを 25% に縮小後並べました。
         | 
| 2 2 | 
             
            
         | 
| 3 3 | 
             
            赤線は並べた後に書き込んだものです。
         | 
| 4 | 
            -
            目立った違いは無さそうです。
         | 
| 4 | 
            +
            目立った違いは無さそうです。
         | 
| 5 | 
            +
            ---
         | 
| 6 | 
            +
            ついでに(?) GridLayout へのボタンの設定は alignment=CENTER,  weight=1f とすることで各枠を GridLayout の幅/高さを等分に分けた大きさに出来ますので、マージンを計算・設定しなくて済むのではないでしょうか。(実際の大きさが決まるのを待つ必要が無くなるので post もせずに済みますし。)
         | 
| 7 | 
            +
            ```java
         | 
| 8 | 
            +
              @Override
         | 
| 9 | 
            +
              protected void onCreate(Bundle savedInstanceState) {
         | 
| 10 | 
            +
                super.onCreate(savedInstanceState);
         | 
| 11 | 
            +
                setContentView(R.layout.activity_main);
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                GridLayout gridLayout = findViewById(R.id.grid);
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                int column = gridLayout.getColumnCount();
         | 
| 16 | 
            +
                int row = gridLayout.getRowCount();
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                int btnSize = 150;
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                String[] note = {"あ", "あ", "", "あ", "あ"};
         | 
| 21 | 
            +
                for (int i = 0; i < column * row; i++) {
         | 
| 22 | 
            +
                  GridLayout.LayoutParams params = new GridLayout.LayoutParams();
         | 
| 23 | 
            +
                  params.width = params.height = btnSize;
         | 
| 24 | 
            +
                  params.columnSpec = GridLayout.spec(i % column, GridLayout.CENTER, 1f);
         | 
| 25 | 
            +
                  params.rowSpec = GridLayout.spec(i / column, GridLayout.CENTER, 1f);
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  CircleButton button = new CircleButton(this, Color.WHITE, btnSize);
         | 
| 28 | 
            +
                  button.setLayoutParams(params);
         | 
| 29 | 
            +
                  button.setId(View.generateViewId());
         | 
| 30 | 
            +
                  button.setText(i % column < note.length ? note[i % column] : null);
         | 
| 31 | 
            +
                  button.setOnClickListener(v -> {
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  });
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  gridLayout.addView(button);
         | 
| 36 | 
            +
                }
         | 
| 37 | 
            +
              }
         | 
| 38 | 
            +
            ```
         | 
