我已经搜索了文档但只找到了这个:链接..。它是用来制作条的半透明什么?我要做的就是让状态栏完全透明(如下图所示),并使其向后兼容APK<19:
我的styles.xml:
<item name="android:actionBarStyle">@style/ThemeActionBar</item>
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/ThemeActionBar</item>
<item name="windowActionBarOverlay">true</item>
<item name="android:background"> @null </item>
<!-- Support library compatibility -->
<item name="background">@null</item>
<item name="android:displayOptions"> showHome | useLogo</item>
<item name="displayOptions">showHome|useLogo</item>
我能做的是:
发布于 2015-03-28 06:38:01
你所需要做的就是在你的主题中设置这些属性:
true
true
您希望具有透明状态栏的活动/容器布局需要此属性设置:
android:fitsSystemWindows="true"
通常不可能在pre-kitkat上确定执行此操作,看起来您可以做到这一点
编辑:我推荐这个库:
https://github.com/jgilfelt/SystemBarTint用于很多前棒棒糖状态栏的颜色控制。
经过深思熟虑后,我了解到,要完全禁用棒棒糖的半透明或状态栏和导航栏上的任何颜色,答案是在窗口上设置此标志:
// In Activity's onCreate() for instance
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
没有其他的主题是必要的,它会产生类似这样的结果:
发布于 2018-02-15 18:26:25
只需将这行代码添加到您的主java文件中:
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
);
发布于 2020-01-18 15:27:20
您可以使用下面的代码使状态栏透明。请参阅红色突出显示的图像,帮助您识别以下代码的用法
用于android应用程序的Kotlin代码片段
步骤:1在create方法中写下代码
if (Build.VERSION.SDK_INT >= 19 && Build.VERSION.SDK_INT < 21) {
setWindowFlag(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, true)
}
if (Build.VERSION.SDK_INT >= 19) {
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}
if (Build.VERSION.SDK_INT >= 21) {
setWindowFlag(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, false)
window.statusBarColor = Color.TRANSPARENT
}
Step2:你需要在下面的代码中描述的SetWindowFlag方法。
private fun setWindowFlag(bits: Int, on: Boolean) {
val win = window
val winParams = win.attributes
if (on) {
winParams.flags = winParams.flags or bits
} else {
winParams.flags = winParams.flags and bits.inv()
}
win.attributes = winParams
}
android应用程序的Java代码片段:
Step1:主要活动代码
if (Build.VERSION.SDK_INT >= 19 && Build.VERSION.SDK_INT < 21) {
setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, true);
}
if (Build.VERSION.SDK_INT >= 19) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
if (Build.VERSION.SDK_INT >= 21) {
setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, false);
getWindow().setStatusBarColor(Color.TRANSPARENT);
}
Step2:SetWindowFlag方法
public static void setWindowFlag(Activity activity, final int bits, boolean on) {
Window win = activity.getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
if (on) {
winParams.flags |= bits;
} else {
winParams.flags &= ~bits;
}
win.setAttributes(winParams);
}
https://stackoverflow.com/questions/29311078
复制相似问题