我想让我的图片填满状态栏并使其透明,如下图所示。我遵循了不同的类似问题,但无法获得所需的效果。
我使用了以下风格。
const done = (err, res) => callback(null, {
statusCode: err ? '400' : '200',
body: err ? err.message : res.Body.toString('utf-8'), // <<-- this line
headers: {
'Content-Type': 'application/json',
'Charset': 'utf-8',
"'Access-Control-Allow-Methods": "GET, POST, OPTIONS"
},
});
我也尝试过添加此代码。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
我需要什么才能获得理想的效果?
答案 0 :(得分:1)
将这些添加到您的主题样式:
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:windowTranslucentStatus">true</item>
并且在您希望状态栏为透明的任何活动中,将其添加到父布局:
android:fitsSystemWindows="true"
也适用于棒棒糖+将这些标志添加到窗口:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
答案 1 :(得分:1)
您正在寻找的行为仅适用于某些Android API版本。从API 19开始,您的应用可以拥有半透明状态栏并在其后面绘制。从API 21开始,您的应用可以拥有透明状态栏并在其后面绘制。为了在所有API级别上成功获得最佳结果,您将不得不做一些工作。您需要在AppTheme
,values/
和values-v19/
中创建values-v21/
样式,并且您需要在所有三个位置都拥有所有基础知识。< / p>
在您的基础values/
样式中,输入:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
在values-v19/
样式中,请输入:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
在values-v21/
样式中,请输入:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
然后,要支持Lollipop +中的透明状态栏,请将其添加到您的活动onCreate()
:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
答案 2 :(得分:0)
将此代码放在您活动的oncreate方法
中 if (GeneralFunctions.isAboveLollipopDevice()) {
Window window = getWindow();
window.setStatusBarColor(ContextCompat.getColor(this, R.color.colorTransparent));
window.getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
这必须是你的样式文件
<style name="BaseAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme" parent="BaseAppTheme" />
并将其添加到您的values-v21-&gt; style.xml中
<resources>
<style name="AppTheme" parent="BaseAppTheme">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/colorTransparent</item>
</style>
</resources>