質問編集履歴

1

タイトルと文章修正、画像削除、コード追加

2016/05/01 15:40

投稿

Nasd
Nasd

スコア8

test CHANGED
@@ -1 +1 @@
1
- AndroidでNavigation Drawerを無効にし最初からメニューを配置たい
1
+ AndroidでNavigation Drawerで出くるようなメニューを最初から配置させたい
test CHANGED
@@ -6,13 +6,15 @@
6
6
 
7
7
  新規作成から「Android Navigation Drawer App AppCompat」を選択し、タブレット用にレイアウトを追加した以外はそのままの状態です。
8
8
 
9
- デフォルトで画面左端からスワイプすることでメニューが出てくるのですが、これを最初から表示させられるようにしたいのです。
9
+ デフォルトでデバッグすると画面左端からスワイプすることでナビゲーションメニューが出てくるのですが、
10
+
11
+ スワイプの必要なく、最初から表示している状態にしたいのです。
10
12
 
11
13
  具体的には「Todoist」や「Evernote」みたいな感じです。スマートフォンだとスワイプでメニューが出てきますが、タブレットだと最初から表示されています。
12
14
 
13
15
 
14
16
 
15
- タブレットの場合のUI
17
+ タブレットの場合のUI(画像の例はTodoist)
16
18
 
17
19
  ![タブレット画面の場合](170c73309e06c7c28b6efc9654cf261e.jpeg)
18
20
 
@@ -20,18 +22,312 @@
20
22
 
21
23
 
22
24
 
23
- スマートフォンの場合のUI
24
-
25
- ![スマホの場合1](d9c468e5cc12bbadcbc9dfc0df833884.jpeg)
26
-
27
- 同じくスマートフォンの場合。これはスワイプしてメニューを出した場合
28
-
29
- ![スマホの場合2](1576017cee68b525e2a22983bfd791f9.jpeg)
30
-
31
-
32
-
33
- こん感じのUIを作りたいのですが、改変する場所の見当がつきません。
25
+ 上記画像のようなUIを作りたいのですが、改変する場所の見当がつきません。
34
-
26
+
35
- 初期状態で、画像でいうスマートフォンの場合の状態がタブレットでも適用されてしまいます。
27
+ タブレットでも今のgoogle playみたいな感じで左から引っ張ってこないとメニューが出ない画面が適用されてしまいます。
36
28
 
37
29
  最初からメニューを配置させたいのですが、どのようにすればよいでしょうか。
30
+
31
+
32
+
33
+ コード(main.axml)
34
+
35
+
36
+
37
+ ```
38
+
39
+
40
+
41
+ <?xml version="1.0" encoding="utf-8"?>
42
+
43
+ <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
44
+
45
+ xmlns:app="http://schemas.android.com/apk/res-auto"
46
+
47
+ android:id="@+id/drawer_layout"
48
+
49
+ android:layout_width="match_parent"
50
+
51
+ android:layout_height="match_parent">
52
+
53
+ <!-- The main content view -->
54
+
55
+ <RelativeLayout
56
+
57
+ android:layout_width="match_parent"
58
+
59
+ android:layout_height="match_parent">
60
+
61
+ <android.support.design.widget.AppBarLayout
62
+
63
+ android:layout_height="wrap_content"
64
+
65
+ android:layout_width="match_parent"
66
+
67
+ android:id="@+id/toolbar_layout">
68
+
69
+ <include
70
+
71
+ android:id="@+id/toolbar"
72
+
73
+ layout="@layout/toolbar"
74
+
75
+ app:layout_scrollFlags="scroll|enterAlways" />
76
+
77
+ </android.support.design.widget.AppBarLayout>
78
+
79
+ <FrameLayout
80
+
81
+ android:id="@+id/content_frame"
82
+
83
+ android:layout_below="@id/toolbar_layout"
84
+
85
+ android:layout_width="match_parent"
86
+
87
+ android:layout_height="match_parent" />
88
+
89
+ </RelativeLayout>
90
+
91
+ <android.support.design.widget.NavigationView
92
+
93
+ android:id="@+id/nav_view"
94
+
95
+ android:layout_width="400dp"
96
+
97
+ android:layout_height="match_parent"
98
+
99
+ android:layout_gravity="left"
100
+
101
+ app:headerLayout="@layout/nav_header"
102
+
103
+ app:menu="@menu/nav_menu" />
104
+
105
+ </android.support.v4.widget.DrawerLayout>
106
+
107
+
108
+
109
+ ```
110
+
111
+ コード(MainActivity.cs)
112
+
113
+ ```
114
+
115
+ using Android.App;
116
+
117
+ using Android.Content.PM;
118
+
119
+ using Android.Content.Res;
120
+
121
+ using Android.OS;
122
+
123
+ using Android.Support.V4.Widget;
124
+
125
+ using Android.Views;
126
+
127
+ using Android.Widget;
128
+
129
+
130
+
131
+ using App4.Fragments;
132
+
133
+ using Android.Support.V7.App;
134
+
135
+ using Android.Support.V4.View;
136
+
137
+ using Android.Support.Design.Widget;
138
+
139
+
140
+
141
+ namespace App4.Activities
142
+
143
+ {
144
+
145
+ [Activity(Label = "Home", MainLauncher = true, LaunchMode = LaunchMode.SingleTop, Icon = "@drawable/Icon")]
146
+
147
+ public class MainActivity : BaseActivity
148
+
149
+ {
150
+
151
+
152
+
153
+ DrawerLayout drawerLayout;
154
+
155
+ NavigationView navigationView;
156
+
157
+
158
+
159
+ protected override int LayoutResource
160
+
161
+ {
162
+
163
+ get
164
+
165
+ {
166
+
167
+ return Resource.Layout.main;
168
+
169
+ }
170
+
171
+ }
172
+
173
+
174
+
175
+ protected override void OnCreate(Bundle savedInstanceState)
176
+
177
+ {
178
+
179
+ base.OnCreate(savedInstanceState);
180
+
181
+
182
+
183
+
184
+
185
+ drawerLayout = this.FindViewById<DrawerLayout>(Resource.Id.drawer_layout);
186
+
187
+
188
+
189
+ //Set hamburger items menu
190
+
191
+ SupportActionBar.SetHomeAsUpIndicator(Resource.Drawable.ic_menu);
192
+
193
+
194
+
195
+ //setup navigation view
196
+
197
+ navigationView = FindViewById<NavigationView>(Resource.Id.nav_view);
198
+
199
+
200
+
201
+ //handle navigation
202
+
203
+ navigationView.NavigationItemSelected += (sender, e) =>
204
+
205
+ {
206
+
207
+ e.MenuItem.SetChecked(true);
208
+
209
+
210
+
211
+ switch (e.MenuItem.ItemId)
212
+
213
+ {
214
+
215
+ case Resource.Id.nav_home_1:
216
+
217
+ ListItemClicked(0);
218
+
219
+ break;
220
+
221
+ case Resource.Id.nav_home_2:
222
+
223
+ ListItemClicked(1);
224
+
225
+ break;
226
+
227
+ }
228
+
229
+
230
+
231
+ Snackbar.Make(drawerLayout, "You selected: " + e.MenuItem.TitleFormatted, Snackbar.LengthLong)
232
+
233
+ .Show();
234
+
235
+
236
+
237
+ drawerLayout.CloseDrawers();
238
+
239
+ };
240
+
241
+
242
+
243
+
244
+
245
+ //if first time you will want to go ahead and click first item.
246
+
247
+ if (savedInstanceState == null)
248
+
249
+ {
250
+
251
+ ListItemClicked(0);
252
+
253
+ }
254
+
255
+ }
256
+
257
+
258
+
259
+ int oldPosition = -1;
260
+
261
+ private void ListItemClicked(int position)
262
+
263
+ {
264
+
265
+ //this way we don't load twice, but you might want to modify this a bit.
266
+
267
+ if (position == oldPosition)
268
+
269
+ return;
270
+
271
+
272
+
273
+ oldPosition = position;
274
+
275
+
276
+
277
+ Android.Support.V4.App.Fragment fragment = null;
278
+
279
+ switch (position)
280
+
281
+ {
282
+
283
+ case 0:
284
+
285
+ fragment = Fragment1.NewInstance();
286
+
287
+ break;
288
+
289
+ case 1:
290
+
291
+ fragment = Fragment2.NewInstance();
292
+
293
+ break;
294
+
295
+ }
296
+
297
+
298
+
299
+ SupportFragmentManager.BeginTransaction()
300
+
301
+ .Replace(Resource.Id.content_frame, fragment)
302
+
303
+ .Commit();
304
+
305
+ }
306
+
307
+
308
+
309
+ public override bool OnOptionsItemSelected(IMenuItem item)
310
+
311
+ {
312
+
313
+ switch (item.ItemId)
314
+
315
+ {
316
+
317
+ case Android.Resource.Id.Home:
318
+
319
+ drawerLayout.OpenDrawer(Android.Support.V4.View.GravityCompat.Start);
320
+
321
+ return true;
322
+
323
+ }
324
+
325
+ return base.OnOptionsItemSelected(item);
326
+
327
+ }
328
+
329
+ }
330
+
331
+ }
332
+
333
+ ```