質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

0回答

1606閲覧

[Uno Platform][Android][Xamarin]ContentDialog表示時にナビゲーションバーを非表示にしたい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

1クリップ

投稿2021/12/22 01:06

編集2022/01/27 10:43

前提・実現したいこと

自作アプリ実行中、Androidのステータスバーとナビゲーションバーを常に非表示にしたい。

・UnoPlatformを使用していますが、ターゲットはAndroidのみです。

発生している問題と質問

MainActivityのOnLaunch時に、
ApplicationView.GetForCurrentView().TryEnterFullScreenMode();
をすることで、両バーは非表示になり、画面もフルスクリーン表示されます。

問題は、
ContentDialogを表示すると、ナビゲーションバーが表示される」です。
ダイアログ表示時もバーを非表示にすることは可能でしょうか?

イメージ説明

該当のソースコード

MainPage.xaml

XAML

1<Page 2 x:Class="HideBarsTest.MainPage" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 xmlns:local="using:HideBarsTest" 6 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 7 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 8 mc:Ignorable="d" 9 Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 10 11 <Grid> 12 <Button Content="ダイアログ表示" FontSize="25" Margin="10" VerticalAlignment="Top" Height="104" Width="201" Click="ダイアログ表示ボタンクリック"/> 13 </Grid> 14</Page>

MainPage.xaml.cs

C#

1using System; 2using System.Collections.Generic; 3using System.IO; 4using System.Linq; 5using System.Runtime.InteropServices.WindowsRuntime; 6using Windows.Foundation; 7using Windows.Foundation.Collections; 8using Windows.UI.ViewManagement; 9using Windows.UI.Xaml; 10using Windows.UI.Xaml.Controls; 11using Windows.UI.Xaml.Controls.Primitives; 12using Windows.UI.Xaml.Data; 13using Windows.UI.Xaml.Input; 14using Windows.UI.Xaml.Media; 15using Windows.UI.Xaml.Navigation; 16 17// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 18 19namespace HideBarsTest 20{ 21 /// <summary> 22 /// An empty page that can be used on its own or navigated to within a Frame. 23 /// </summary> 24 public sealed partial class MainPage : Page 25 { 26 public MainPage() 27 { 28 this.InitializeComponent(); 29 } 30 31 private async void ダイアログ表示ボタンクリック(object sender,RoutedEventArgs e) 32 { 33 var dlg = new ContentDialog(); 34 dlg.Content = "Content Dialog !!"; 35 dlg.PrimaryButtonText = "プライマリボタン"; 36 dlg.IsPrimaryButtonEnabled = true; 37 // 表示直前に入れても、ダイアログ表示中は、バーが表示される 38 ApplicationView.GetForCurrentView().TryEnterFullScreenMode(); 39 await dlg.ShowAsync(); 40 // await後に実行すると、バーは消える 41 ApplicationView.GetForCurrentView().TryEnterFullScreenMode(); 42 } 43 } 44}

MainActivity.cs

C#

1using Android.App; 2using Android.Widget; 3using Android.OS; 4using Android.Content.PM; 5using Android.Views; 6using Android; 7using Android.Content; 8using Windows.UI.ViewManagement; 9 10namespace HideBarsTest.Droid 11{ 12 [Activity( 13 MainLauncher = true, 14 ConfigurationChanges = global::Uno.UI.ActivityHelper.AllConfigChanges, 15 WindowSoftInputMode = SoftInput.AdjustPan | SoftInput.StateHidden 16 )] 17 public class MainActivity : Windows.UI.Xaml.ApplicationActivity 18 { 19 protected override void OnCreate(Bundle bundle) 20 { 21 base.OnCreate(bundle); 22 //フルスクリーンモードにする 23 ApplicationView.GetForCurrentView().TryEnterFullScreenMode(); 24 } 25 26 protected override void OnResume() 27 { 28 base.OnResume(); 29 //フルスクリーンモードにする 30 ApplicationView.GetForCurrentView().TryEnterFullScreenMode(); 31 } 32 } 33}

試したこと

タイマーを使って定期的にフルスクリーン処理を実施しても、ダイアログ表示中はバーが表示されます。

C#

1 private Timer PeriodicTimer; 2 3 protected override void OnCreate(Bundle bundle) 4 { 5 base.OnCreate(bundle); 6 ApplicationView.GetForCurrentView().TryEnterFullScreenMode(); 7 8 PeriodicTimer = new Timer(); 9 PeriodicTimer.AutoReset = true; 10 PeriodicTimer.Interval = 500; 11 PeriodicTimer.Elapsed += PeriodicTimer_Elapsed; 12 PeriodicTimer.Start(); 13 14 } 15 16 private void PeriodicTimer_Elapsed(object sender, ElapsedEventArgs e) 17 { 18 ApplicationView.GetForCurrentView().TryEnterFullScreenMode(); 19 }

補足情報(FW/ツールのバージョンなど)

VisualStudio Enterprise 2019 Ver.16.11.7
Multi-Platform App(Uno platform | Xamarin)
Android 9.0 - API 28

Styles.xmlを以下のように記述し、Main.csにThemeを設定することで、
上部のステータスバーは常に非表示にすることはできています。

XML

1<?xml version="1.0" encoding="utf-8" ?> 2<resources> 3 <style name="Theme.AppCompat.Light.NoTitleBar.FullScreen" parent="Theme.AppCompat.Light"> 4 <!-- This removes the ActionBar --> 5 <item name="windowNoTitle">true</item> 6 <item name="windowActionBar">false</item> 7 <item name="android:windowFullscreen">true</item> 8 <item name="android:windowContentOverlay">@null</item> 9 </style> 10</resources>

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using Android.App; 6using Android.Content; 7using Android.OS; 8using Android.Runtime; 9using Android.Views; 10using Android.Widget; 11using Com.Nostra13.Universalimageloader.Core; 12using Windows.UI.Xaml.Media; 13 14namespace HideBarsTest.Droid 15{ 16 [global::Android.App.ApplicationAttribute( 17 Label = "@string/ApplicationName", 18 Icon = "@mipmap/icon", 19 LargeHeap = true, 20 HardwareAccelerated = true, 21 Theme = "@style/Theme.AppCompat.Light.NoTitleBar.FullScreen" 22 )] 23 public class Application : Windows.UI.Xaml.NativeApplication 24 { 25 public Application(IntPtr javaReference, JniHandleOwnership transfer) 26 : base(() => new App(), javaReference, transfer) 27 { 28 ConfigureUniversalImageLoader(); 29 } 30 31 private void ConfigureUniversalImageLoader() 32 { 33 // Create global configuration and initialize ImageLoader with this config 34 ImageLoaderConfiguration config = new ImageLoaderConfiguration 35 .Builder(Context) 36 .Build(); 37 38 ImageLoader.Instance.Init(config); 39 40 ImageSource.DefaultImageLoader = ImageLoader.Instance.LoadImageAsync; 41 } 42 } 43} 44

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問