回答編集履歴
3
修正
test
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
ご提示頂いたコードとレイアウトを新規作成したプロジェクトの MainActivity.java と activity_main.xml に張り付け、いつも使っている Pix
|
1
|
+
ご提示頂いたコードとレイアウトを新規作成したプロジェクトの MainActivity.java と activity_main.xml に張り付け、いつも使っている Pixel 6 API 30 のエミュレータで setText をコメントにした/しない場合の実行時画面をキャプチャして "ペイント" でそれぞれを 25% に縮小後並べました。
|
2
2
|
![実行時画面比較](https://ddjkaamml8q8x.cloudfront.net/questions/2024-05-14/da692f8a-d378-4a1f-b263-2a066bbedce8.png)
|
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
修正
test
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
![実行時画面比較](https://ddjkaamml8q8x.cloudfront.net/questions/2024-05-14/da692f8a-d378-4a1f-b263-2a066bbedce8.png)
|
3
3
|
赤線は並べた後に書き込んだものです。
|
4
4
|
目立った違いは無さそうです。
|
5
|
+
|
5
6
|
---
|
7
|
+
|
6
8
|
ついでに(?) GridLayout へのボタンの設定は alignment=CENTER, weight=1f とすることで各枠を GridLayout の幅/高さを等分に分けた大きさに出来ますので、マージンを計算・設定しなくて済むのではないでしょうか。(実際の大きさが決まるのを待つ必要が無くなるので post もせずに済みますし。)
|
7
9
|
```java
|
8
10
|
@Override
|
1
追加
test
CHANGED
@@ -2,3 +2,37 @@
|
|
2
2
|
![実行時画面比較](https://ddjkaamml8q8x.cloudfront.net/questions/2024-05-14/da692f8a-d378-4a1f-b263-2a066bbedce8.png)
|
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
|
+
```
|