回答編集履歴

1

コード追加

2020/07/08 10:24

投稿

takapi_cs
takapi_cs

スコア349

test CHANGED
@@ -5,3 +5,163 @@
5
5
 
6
6
 
7
7
  ディスプレイにナビゲーションバーがある端末のユーザー目線で考えると、勝手にバーが非表示になってしまうと困りそうなので、個人的にはおすすめはしません。
8
+
9
+
10
+
11
+ -----
12
+
13
+ 追記
14
+
15
+ Xamarin.FormsでもDependencyServiceを使用することで、各プラットフォーム固有の機能を使うことができます。
16
+
17
+ 実際に実装して、動作するか確認してみました。
18
+
19
+ 下部ナビゲーションバーを非表示にすることは可能なようです。
20
+
21
+
22
+
23
+ ```C#
24
+
25
+ (ViewModel側)
26
+
27
+
28
+
29
+ namespace HideNaviBar.ViewModels
30
+
31
+ {
32
+
33
+ public class MainPageViewModel : ViewModelBase
34
+
35
+ {
36
+
37
+ private DelegateCommand _switchCommand;
38
+
39
+ public DelegateCommand SwitchCommand =>
40
+
41
+ _switchCommand ?? (_switchCommand = new DelegateCommand(ExecuteSwitchCommand));
42
+
43
+
44
+
45
+ void ExecuteSwitchCommand()
46
+
47
+ {
48
+
49
+ var dependencyService = new Prism.Services.DependencyService();
50
+
51
+ dependencyService.Get<INaviBarService>().SwitchNaviBar();
52
+
53
+ }
54
+
55
+
56
+
57
+ public MainPageViewModel(INavigationService navigationService)
58
+
59
+ : base(navigationService)
60
+
61
+ {
62
+
63
+ Title = "Main Page";
64
+
65
+ }
66
+
67
+ }
68
+
69
+ }
70
+
71
+ ```
72
+
73
+
74
+
75
+ ```C#
76
+
77
+ (共通ライブラリ側)
78
+
79
+
80
+
81
+ namespace HideNaviBar.Models
82
+
83
+ {
84
+
85
+ public interface INaviBarService
86
+
87
+ {
88
+
89
+ void SwitchNaviBar();
90
+
91
+ }
92
+
93
+ }
94
+
95
+ ```
96
+
97
+
98
+
99
+ ```C#
100
+
101
+ (Android側)
102
+
103
+
104
+
105
+ using Android.Views;
106
+
107
+ using HideNaviBar.Droid;
108
+
109
+ using HideNaviBar.Models;
110
+
111
+ using Xamarin.Forms;
112
+
113
+
114
+
115
+ [assembly: Dependency(typeof(NaviBarService))]
116
+
117
+ namespace HideNaviBar.Droid
118
+
119
+ {
120
+
121
+ public class NaviBarService : INaviBarService
122
+
123
+ {
124
+
125
+ public void SwitchNaviBar()
126
+
127
+ {
128
+
129
+ var decorView = MainActivity.Instance.Window.DecorView;
130
+
131
+
132
+
133
+ // 実際に使用する場合はこちらの方が良いと思います
134
+
135
+ //var systemUiFlags = SystemUiFlags.LayoutStable
136
+
137
+ // | SystemUiFlags.LayoutHideNavigation
138
+
139
+ // | SystemUiFlags.LayoutFullscreen
140
+
141
+ // | SystemUiFlags.HideNavigation
142
+
143
+ // | SystemUiFlags.Fullscreen
144
+
145
+ // | SystemUiFlags.ImmersiveSticky;
146
+
147
+
148
+
149
+ var uiOptions = SystemUiFlags.HideNavigation
150
+
151
+ | SystemUiFlags.Fullscreen;
152
+
153
+ decorView.SystemUiVisibility = (StatusBarVisibility)(int)uiOptions;
154
+
155
+ }
156
+
157
+ }
158
+
159
+ }
160
+
161
+ ```
162
+
163
+
164
+
165
+ SystemUiVisibilityの設定で、下記サイトが参考になりました。
166
+
167
+ [XamarinでAndroidアプリをフルスクリーンで表示させる](https://kurosawa0626.wordpress.com/2017/05/29/xamarin%E3%81%A7android%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E3%83%95%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%95%E3%81%9B%E3%82%8B/)