void Start() { if (m_insetsListenerInstalled) { return; } using (var version = new AndroidJavaClass("android.os.Build$VERSION")) { // Supported on Android 9 Pie (API 28) and later if (version.GetStatic <int>("SDK_INT") >= 28) { // Install the listener using (var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { using (var activity = unityPlayer.GetStatic <AndroidJavaObject>("currentActivity")) { using (var window = activity.Call <AndroidJavaObject>("getWindow")) { using (var decorView = window.Call <AndroidJavaObject>("getDecorView")) { var windowInsetsListener = new WindowInsetsListener(); windowInsetsListener.InitInsets(decorView); decorView.Call("setOnApplyWindowInsetsListener", windowInsetsListener); m_insetsListenerInstalled = true; } } } } } } }
public GlobalLayoutProvider(Activity activity, GlobalLayoutListener globalListener, WindowInsetsListener insetsListener) : base(activity) { _activity = activity; _globalListener = globalListener; _insetsListener = insetsListener; ContentView = new LinearLayout(_activity.BaseContext) { LayoutParameters = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent) }; Width = 0; // this make sure we don't block touch events Height = ViewGroup.LayoutParams.MatchParent; SetBackgroundDrawable(new ColorDrawable(Color.Transparent)); }