KitKat中的半透明系统条和内容边距

我正在尝试利用新的KitKat半透明系统条,在我的应用程序的背景中获得全屏图像。

我在找出正确的设置以获得我想要的行为时遇到了问题。 现在我有一个带有三个FragmentViewPager ,每个Fragment由一个包含ImageView (用于背景图像)的RelativeLayout和用于内容的TextView

我所追求的是让内容完全适合可用于交互的屏幕部分,并使图像占据屏幕的整个可见部分。

如果我只是使用android:Theme.Holo.Light.NoActionBar.TranslucentDecor作为我的主题,它在纵向看起来很好,但导航栏重叠了横向内容(见下面的截图)。

第一次尝试 - 肖像。看起来不错。第一次尝试 - 景观。导航栏重叠内容

按照文档中的建议 ,我在我的主题中添加了android:fitsSystemWindows = true ,但这会产生一些奇怪的文物(见下文) 第二次尝试 - 肖像。神器!第二次尝试 - 景观。神器!

我怎样才能使它在第二个例子中表现得像,但看起来不错,没有视觉文物?

Solutions Collecting From Web of "KitKat中的半透明系统条和内容边距"

我知道这已经过时了,但是我遇到了同样的问题并且发现了一个简单的解决方案,所以我想分享它以防万一谷歌遇到这种情况。

当ViewPager(尤其是ImageSwitcher)放置在具有属性android:fitsSystemWindows="true"的布局中时,似乎存在Android错误。 出于某种原因,系统窗口似乎正在获取遍布它们的工件。 :/

无论如何,我发现了一个修复。 对于我的活动,我有一个XML布局如下:

  android:layout_width="match_parent" android:layout_height="match_parent">      android:layout_width="match_parent" android:layout_height="match_parent">   

诀窍是不在包含android:fitsSystemWindows="true"属性的布局中包含ImageSwitcher,而是将android:fitsSystemWindows="true"属性移动到包含我需要适合的实际内容的内部 FrameLayout(标题)你案子中的文字)。 不幸的是,这允许ImageSwitcher / ViewPager的视图被系统窗口略微切断,但是如果图像像背景图像一样使用它无关紧要并且比工件或维护所有更好的权衡可能有也可能没有禁用导航的不同尺寸/样式(例如当前选择的答案)。

我希望这可以帮助别人!

我的解决方案是在横向模式下禁用半透明导航。 您仍然可以获得半透明的状态栏,但它解决了导航栏不透明并且在横向上重叠的问题。

res / values-v19 / styles.xml (这些值在我的主题中)

 true @bool/translucentNavBar 

res / values-v19 / bools.xml (启用半透明导航)

 true 

res / values-land-v19 / bools.xml (在横向上禁用半透明导航)

 false 

res / values-sw600dp-land-v19 / bools.xml (为横向平板电脑启用半透明导航)

 true 

我遇到了类似的问题,但我没有使用ViewPager,所以这可能不起作用。 我通过Gabe描述的嵌套来解决:只有内部ViewGroup是fitSystemWindows =“true”,因此允许显示背景的外部ViewGroup在半透明条下延伸。 然后我也在方向更改上调用requestFitSystemWindows() 。 同样,您的ViewPager可能会使事情变得复杂,我的解决方案将无法正常工作,但我希望这会有所帮助。

将另一个ViewGroup放在带有image和fitsSystemWindows的那个 ViewGroup中

您应该将其包装在Linear Layout中并将fitsSystemWindows设置为true。