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

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

新規登録して質問してみよう
ただいま回答率
86.12%
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 の両方の開発を行うことができます。

受付中

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

Toradamon
Toradamon

総合スコア55

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回答

0グッド

1クリップ

959閲覧

投稿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

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

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 の両方の開発を行うことができます。