Waz*_*_Be 35 android android-actionbar android-4.4-kitkat
在将我的应用程序更新到Kitkat时,我只想使用Translucent属性在KitKat上给它们一个漂亮的外观:
半透明系统条
现在,您可以使用新主题(Theme.Holo.NoActionBar.TranslucentDecor和Theme.Holo.Light.NoActionBar.TranslucentDecor)使系统栏部分半透明.通过启用半透明系统条,您的布局将填充系统条后面的区域,因此您还必须为布局中不应被系统条覆盖的部分启用[fitsSystemWindows] [4].
我唯一担心的是我想使用一个与Google想要相反的ActionBar(两个主题都有NoActionBar:
Theme.Holo.NoActionBar.TranslucentDecor
Theme.Holo.Light.NoActionBar.TranslucentDecor
Run Code Online (Sandbox Code Playgroud)
由于我不打算使用一些黑客或技巧来使其工作,我只是想知道是否有一些正确的方法来实现这一点,或者这是否违反谷歌的指导方针.

adn*_*eal 48
您可以使用android.R.attr#windowTranslucentStatus设置创建自己的主题,true以实现相同的效果而不会丢失ActionBar.
来自文档:
指示此窗口是否请求半透明状态栏的标志.对应于{@link android.view.WindowManager.LayoutParams #FLAG_TRANSLUCENT_STATUS}.
风格 - 请记住,这些会进入values-v19.
<style name="TranslucentStatusBar" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/TranslucentActionBar</item>
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<style name="TranslucentActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
布局
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_blue_dark"
android:fitsSystemWindows="true" >
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_purple" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
结果

ste*_*ple 40
这适用于较少的行:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window w = getWindow(); // in Activity's onCreate() for instance
w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
Run Code Online (Sandbox Code Playgroud)
如果有人可以添加,如何检查半透明导航是否可用,那将是很好的,因为N10例如将使用Build.VERSION_CODES.KITKAT禁用半透明导航.编辑:在此问题中回答: 检查半透明导航是否可用
小智 29
以下代码在我的应用程序中运行良好.
半透明:
Window w = getWindow();
w.setFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
w.setFlags(
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
Run Code Online (Sandbox Code Playgroud)
设置不是半透明的:
final WindowManager.LayoutParams attrs = getWindow()
.getAttributes();
attrs.flags &= (~WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
attrs.flags &= (~WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().setAttributes(attrs);
getWindow().clearFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
Run Code Online (Sandbox Code Playgroud)
Waz*_*_Be 17
这是我正在寻找的答案:https: //github.com/jgilfelt/SystemBarTint
Android 4.4(KitKat)为状态和导航栏引入了半透明系统UI样式.这些样式非常适合基于墙纸的活动,如主屏幕启动器,但提供的最小背景保护使它们对其他类型的活动不太有用,除非您在布局中提供自己的背景.确定给定设备配置的系统UI的大小,位置和存在可能是非常重要的.
该库提供了一种为系统条创建背景"色调"的简单方法,无论是颜色值还是Drawable.默认情况下,它会为您提供半透明的黑色背景,这对于持久系统UI仍然很重要的全出血内容屏幕非常有用 - 例如放置在地图或照片网格上时.

| 归档时间: |
|
| 查看次数: |
53929 次 |
| 最近记录: |