Android type_system_overlay 没有覆盖整个屏幕
Android type_system_overlay not covering entire screen
我已经为这个问题苦思了一个星期了。各种 google 搜索揭示了可能的解决方案,但没有任何效果。
我会 post 一个 link 到我的应用程序,但我确信这是不允许的。
简单的应用程序:按下一个按钮,它会激活一个半透明的彩色覆盖层。
问题:
当覆盖被激活时,如果导航栏是透明的,它不会cover/go在导航栏后面。
示例:您可以看到导航栏未被覆盖。透明的蓝色是覆盖层。
在 main activity super 和设置内容视图之后:
Intent i = new Intent(getApplicationContext(), TintOverlayService.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
在TintOverlayService.class
LayoutInflater li = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
windowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
mTopView = (LinearLayout) li.inflate(R.layout.red_overlay, null, false);
mTopView.setBackgroundColor(Color.parseColor(colorCode.replace("#", tintValue)));
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
PixelFormat.TRANSLUCENT);
此 Color.parseColor(colorCode.replace("#", tintValue))
仅应用用户选择的颜色和不透明度级别。
XML 用于 red_overlay
布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#40370000"
android:theme="@android:style/Theme.Holo.NoActionBar.TranslucentDecor"
android:fitsSystemWindows="true"
>
</LinearLayout>
我尝试了各种 WindowManager.LayoutParams
、布局、自定义主题、视图标志、沉浸式视图。我现在头疼得不知所措。
非常感谢任何帮助。
我所要做的就是在参数中添加两个标志:
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
int LayoutParamFlags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
densityDpi * 6,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
LayoutParamFlags,
PixelFormat.TRANSLUCENT);
我已经为这个问题苦思了一个星期了。各种 google 搜索揭示了可能的解决方案,但没有任何效果。
我会 post 一个 link 到我的应用程序,但我确信这是不允许的。 简单的应用程序:按下一个按钮,它会激活一个半透明的彩色覆盖层。
问题:
当覆盖被激活时,如果导航栏是透明的,它不会cover/go在导航栏后面。
示例:您可以看到导航栏未被覆盖。透明的蓝色是覆盖层。
在 main activity super 和设置内容视图之后:
Intent i = new Intent(getApplicationContext(), TintOverlayService.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
在TintOverlayService.class
LayoutInflater li = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
windowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
mTopView = (LinearLayout) li.inflate(R.layout.red_overlay, null, false);
mTopView.setBackgroundColor(Color.parseColor(colorCode.replace("#", tintValue)));
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
PixelFormat.TRANSLUCENT);
此 Color.parseColor(colorCode.replace("#", tintValue))
仅应用用户选择的颜色和不透明度级别。
XML 用于 red_overlay
布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#40370000"
android:theme="@android:style/Theme.Holo.NoActionBar.TranslucentDecor"
android:fitsSystemWindows="true"
>
</LinearLayout>
我尝试了各种 WindowManager.LayoutParams
、布局、自定义主题、视图标志、沉浸式视图。我现在头疼得不知所措。
非常感谢任何帮助。
我所要做的就是在参数中添加两个标志:
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
int LayoutParamFlags = WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION
| WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
densityDpi * 6,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
LayoutParamFlags,
PixelFormat.TRANSLUCENT);