“的意外行为”;android:windowTranslucentNavigation“;
我第一次在我目前正在开发的主应用程序中遇到这种奇怪的行为。为了调试这个问题,我创建了一个测试应用程序。 测试应用程序只有一个活动main活动,它扩展了活动。 此活动的主题是styles.xml中声明的AppTheme.NoActionBar“的意外行为”;android:windowTranslucentNavigation“;,android,xml,android-styles,Android,Xml,Android Styles,我第一次在我目前正在开发的主应用程序中遇到这种奇怪的行为。为了调试这个问题,我创建了一个测试应用程序。 测试应用程序只有一个活动main活动,它扩展了活动。 此活动的主题是styles.xml中声明的AppTheme.NoActionBar @颜色/原色 @颜色/原色暗 @颜色/颜色重音 #FFFFFF 真的 真的 假的 使用此选项,输出看起来像下图1 现在这不是我所期望的,看看状态栏和工具栏是如何合并在一起的 但是当我删除这行代码时 <item name="android:windo
@颜色/原色
@颜色/原色暗
@颜色/颜色重音
#FFFFFF
真的
真的
假的
使用此选项,输出看起来像下图1
现在这不是我所期望的,看看状态栏和工具栏是如何合并在一起的
但是当我删除这行代码时
<item name="android:windowTranslucentNavigation">true</item>
true
这就是我的结局
请注意,这次工具栏和状态栏没有合并,而是将状态栏放在适当的位置,并将工具栏放在其下方。
我无法理解在图像1中如何在状态栏下绘制布局
我知道这个问题会让很多读这篇文章的人感到困惑。但是如何添加属性呢
<item name="android:windowTranslucentNavigation">true</item>
true
这与状态栏无关,它正在影响它
我的测试设备运行在android上,所以经过一番研究后,我发现
android:windowTranslucentNavigation=true
不仅使导航栏半透明,还允许布局在状态栏后面绘制
问题是,如果我们想要有一个彩色的导航栏(用于棒棒糖和更高版本),而不是半透明的,我们需要删除该行,这样我们就无法再在状态栏后面绘制
解决方法:
声明styles.xml(v21)并设置导航栏颜色
<item name="android:navigationBarColor">@color/red</item>
结论:
对于设备(API<21),android:windowTranslucentNavigation=true将使导航栏半透明,布局将绘制在状态栏后面,对于设备(API>=21),我们可以修改导航栏的颜色而不破坏UI
<item name="android:navigationBarColor">@color/red</item>
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) // Checks the API level of the device
{
getWindow()
.getDecorView();
.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}