1

この質問は私がやっての様々な形を試してみましたが、それらの非は私の活動ではXamarin ...xamarin androidのナビゲーションバーを非表示にするにはどうすればいいですか?

と連携かなり頻繁に尋ねているように見えるが、様々な答えを見(非Xamarin):

public override void OnWindowFocusChanged(bool hasFocus) { 
    base.OnWindowFocusChanged(hasFocus); 

    if (hasFocus) { 
    var uiOptions = 
     SystemUiFlags.HideNavigation | 
     SystemUiFlags.LayoutHideNavigation | 
     SystemUiFlags.LayoutFullscreen | 
     SystemUiFlags.Fullscreen | 
     SystemUiFlags.LayoutStable | 
     SystemUiFlags.ImmersiveSticky; 

    Window.DecorView.SystemUiVisibility = (StatusBarVisibility) uiOptions; 
    } 
} 

私はまた、このアクティビティをOnCreate()で試しました。何も動作していないようです。

私が読んでいる: https://developer.android.com/training/system-ui/immersive.html https://cmsdk.com/android/hide-navigation-bar-android-xamarin.html http://codegur.com/28394281/in-xamarin-android-how-can-i-hide-the-navigation-bar

Activity.cs:見つけ

using Android.App; 
using Android.Graphics; 
using Android.OS; 
using Android.Support.V4.Content; 
using Android.Views; 
using Android.Widget; 
using Calligraphy; 
using Dictionary.Fragments; 
using Dictionary.Logic.Translation; 
using Newtonsoft.Json; 

namespace Dictionary.Activities { 

    [Activity(MainLauncher = true)] 
    public class MainActivity: Activity { 

    protected override void OnCreate(Bundle bundle) { 
     base.OnCreate(bundle); 
     SetContentView(Resource.Layout.Main); 
     SetToolbar(); 
     SetStatusBarColor(); 
     ShowSearchFragment(); 
    } 

    public override void OnWindowFocusChanged(bool hasFocus) { 
     base.OnWindowFocusChanged(hasFocus); 

     if (hasFocus) { 
     var uiOptions = 
      SystemUiFlags.HideNavigation | 
      SystemUiFlags.LayoutHideNavigation | 
      SystemUiFlags.LayoutFullscreen | 
      SystemUiFlags.Fullscreen | 
      SystemUiFlags.LayoutStable | 
      SystemUiFlags.ImmersiveSticky; 

     Window.DecorView.SystemUiVisibility = (StatusBarVisibility) uiOptions; 
     } 
    } 

    public override bool OnCreateOptionsMenu(IMenu menu) { 
     MenuInflater.Inflate(Resource.Menu.Toolbar, menu); 
     return base.OnCreateOptionsMenu(menu); 
    } 

    protected override void AttachBaseContext(Android.Content.Context @base) { 
     base.AttachBaseContext(CalligraphyContextWrapper.Wrap(@base)); 
    } 

    private void SetStatusBarColor() { 
     Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds); 
     Window.SetStatusBarColor(new Color(ContextCompat.GetColor(this, Resource.Color.PrimaryColorDark))); 
    } 

    private void SetToolbar() { 
     var toolbar = FindViewById<Toolbar>(Resource.Id.toolbar); 
     SetActionBar(toolbar); 
     ActionBar.Title = GetString(Resource.String.AppName); 
    } 

    private void ShowSearchFragment() { 
     var searchFragment = new SearchFragment(); 
     searchFragment.TranslationSelected += OnTranslationSelected; 
     var fragTrans = FragmentManager.BeginTransaction(); 
     fragTrans.Add(Resource.Id.fragHolder, searchFragment); 
     fragTrans.Commit(); 
    } 
    } 
} 

問題:

私の検索断片でこの編集ボックスは、キーボードを表示するように引き起こしているが、フルスクリーンモードを解除すると、キーボードが消えても全画面が戻らなくなります。

<EditText android:id="@+id/txtSearch" 
        android:layout_width="match_parent" 
        android:layout_height="48dp" 
        android:background="#FFF" 
        android:gravity="center" 
        android:hint="@string/SearchHint" 
        android:imeOptions="flagNoExtractUi|actionDone" 
        android:inputType="textNoSuggestions" 
        android:singleLine="true" 
        android:textColorHint="#ABABAB" 
        android:textSize="18sp" 
        fontPath="Fonts/amiri-regular.ttf" 
        android:textCursorDrawable="@drawable/cursor"/> 
+0

あなたの問題を再現できないというのは非常に奇妙で、あなたのコードは私の側でうまくいきます。あなたはxamarinのバージョンを提供してもらえますか?どのデバイスでコードをテストしましたか?私はAndroidのエミュレータでそれを実行し、それは完璧に動作します。 –

+0

@ GraceFeng-MSFT私はMarshmallowを実行しているLG G3でテストしています。また、エミュレータでMarshmallowを実行していても同じ結果が得られます。レイアウト、スタイル、アクティビティを見てみたいと思います。それを台無しにしている。おそらく、キーボードを表示したり、カスタムテーマを適用したりしてはいけません。 – sprocket12

+0

私はAndroid 6.0エミュレータでもテストしました。ここに私の[screenshot](https://i.stack.imgur.com/Yc1Zf.png)があります。空のアンドロイドアプリでコードを試してみましたか? –

答えて

0

私は原因はキーボードが消えた後であっても、フォーカスをとり、これが動作しない可能キーボードを立ち上げる私のSearchFragmentでのEditText、であることが判明。

この問題を回避するには、キーボードが開いているかどうかを検出し、キーボードが閉じている場合は、ビューをフルスクリーンに戻してください。

リスナーを作成して、キーボードが閉じているかどうかを検出できます。たとえば、次のように

protected override void OnCreate(Bundle bundle) 
{ 
    base.OnCreate(bundle); 

    // Set our view from the "main" layout resource 
    SetContentView(Resource.Layout.Main); 

    decorview = Window.DecorView; 
    LinearLayout root = FindViewById<LinearLayout>(Resource.Id.rootView); 
    screenheight = root.Height; 
    root.ViewTreeObserver.AddOnGlobalLayoutListener(new mOnGlobalLayoutListener()); 
} 

public static int screenheight; 
public static View decorview; 

そしてmOnGlobalLayoutListenerはこのようなものになることができます。

public class mOnGlobalLayoutListener : Java.Lang.Object, IOnGlobalLayoutListener 
{ 
    public void OnGlobalLayout() 
    { 
     Rect r = new Rect(); 
     var keypadHeight = MainActivity.screenheight - r.Bottom; 
     if (keypadHeight <= MainActivity.screenheight * 0.15) 
     { 
      var uiOptions = 
       SystemUiFlags.HideNavigation | 
       SystemUiFlags.LayoutHideNavigation | 
       SystemUiFlags.LayoutFullscreen | 
       SystemUiFlags.Fullscreen | 
       SystemUiFlags.LayoutStable | 
       SystemUiFlags.ImmersiveSticky; 

      MainActivity.decorview.SystemUiVisibility = (StatusBarVisibility)uiOptions; 
     } 
    } 
} 

検査済みとキーボードが閉じているときに、それが正常に動作します。

関連する問題