回答編集履歴

1

解決したソースコード

2018/05/10 06:21

投稿

piston2438
piston2438

スコア7

test CHANGED
@@ -1,9 +1,225 @@
1
+ GridLayoutの「layout_margin」のみ未解決ですが、Buttonに関しては全て解決できました。
2
+
1
3
  Android.Support.V7.Widget.GridLayoutのInvokeSpec()メソッドを使うことで、
2
4
 
5
+ 位置指定、重み、スパンを指定できます。以下にソースコードを記載します。
6
+
7
+
8
+
9
+ using Android.App;
10
+
11
+ using Android.Widget;
12
+
13
+ using Android.OS;
14
+
15
+ using Android.Views;
16
+
17
+
18
+
19
+ namespace App1
20
+
21
+ {
22
+
23
+ [Activity(Label = "App1", MainLauncher = true)]
24
+
25
+ public class MainActivity : Activity
26
+
27
+ {
28
+
29
+ protected override void OnCreate(Bundle savedInstanceState)
30
+
31
+ {
32
+
33
+ base.OnCreate(savedInstanceState);
34
+
35
+
36
+
37
+ // Set our view from the "main" layout resource
38
+
39
+ //SetContentView(Resource.Layout.Main);
40
+
41
+
42
+
43
+ Android.Support.V7.Widget.GridLayout rootLayout = new Android.Support.V7.Widget.GridLayout(this);
44
+
45
+ rootLayout.LayoutParameters = new Android.Support.V7.Widget.GridLayout.LayoutParams
46
+
47
+ {
48
+
3
- Buttonの位置指定「app:layout_row」「app:layout_column」と
49
+ Width = ViewGroup.LayoutParams.MatchParent,
50
+
4
-
51
+ Height = ViewGroup.LayoutParams.MatchParent
52
+
53
+ };
54
+
55
+ //
56
+
57
+ rootLayout.ColumnCount = 3;
58
+
59
+ rootLayout.RowCount = 3;
60
+
61
+ rootLayout.UseDefaultMargins = true;
62
+
63
+
64
+
65
+ //
66
+
67
+ SetContentView(rootLayout);
68
+
69
+
70
+
71
+ //
72
+
73
+ Button[] btn = new Button[7];
74
+
75
+ for(int i=0; i<7; i++)
76
+
77
+ {
78
+
79
+
80
+
81
+ //
82
+
83
+ int rowPos;
84
+
85
+ int colPos;
86
+
87
+ //
88
+
89
+ int rowSpan = 1;
90
+
91
+ int colSpan = 1;
92
+
93
+ //
94
+
95
+ switch (i)
96
+
97
+ {
98
+
99
+ case 0:
100
+
101
+ rowPos = 0;
102
+
103
+ colPos = 0;
104
+
105
+ //
106
+
107
+ rowSpan = 2;
108
+
109
+ //
110
+
111
+ break;
112
+
113
+
114
+
115
+ case 1:
116
+
117
+ rowPos = 0;
118
+
119
+ colPos = 1;
120
+
121
+ break;
122
+
123
+
124
+
125
+ case 2:
126
+
127
+ rowPos = 0;
128
+
129
+ colPos = 2;
130
+
131
+ break;
132
+
133
+
134
+
135
+ case 3:
136
+
137
+ rowPos = 1;
138
+
139
+ colPos = 1;
140
+
141
+ break;
142
+
143
+
144
+
145
+ case 4:
146
+
147
+ rowPos = 1;
148
+
149
+ colPos = 2;
150
+
151
+ break;
152
+
153
+
154
+
155
+ case 5:
156
+
157
+ rowPos = 2;
158
+
159
+ colPos = 0;
160
+
161
+ break;
162
+
163
+
164
+
165
+ case 6:
166
+
167
+ rowPos = 2;
168
+
169
+ colPos = 1;
170
+
171
+ //
172
+
173
+ colSpan = 2;
174
+
175
+ //
176
+
177
+ break;
178
+
179
+
180
+
181
+ default:
182
+
183
+ rowPos = 0;
184
+
185
+ colPos = 0;
186
+
187
+ break;
188
+
189
+ }
190
+
191
+
192
+
193
+ //
194
+
195
+ btn[i] = new Button(this);
196
+
197
+ btn[i].Text = i.ToString();
198
+
5
- 重み「app:layout_columnWeight」「app:layout_rowWeight」を設定できそうです。
199
+ btn[i].LayoutParameters = new Android.Support.V7.Widget.GridLayout.LayoutParams()
200
+
6
-
201
+ {
202
+
7
-
203
+ Width = ViewGroup.LayoutParams.WrapContent,
204
+
8
-
205
+ Height = ViewGroup.LayoutParams.WrapContent,
206
+
207
+ RowSpec = Android.Support.V7.Widget.GridLayout.InvokeSpec(rowPos, rowSpan, Android.Support.V7.Widget.GridLayout.FillAlignment, 1), // 1→Weight
208
+
209
+ ColumnSpec = Android.Support.V7.Widget.GridLayout.InvokeSpec(colPos, colSpan, Android.Support.V7.Widget.GridLayout.FillAlignment, 1), // 1→Weight
210
+
211
+ };
212
+
213
+ btn[i].Gravity = GravityFlags.Center;
214
+
215
+ //
216
+
9
- 再度確認し詳細を改めて投稿させて頂きます。
217
+ rootLayout.AddView(btn[i]);
218
+
219
+ }
220
+
221
+ }
222
+
223
+ }
224
+
225
+ }