Java 如何将状态栏设置为透明,但导航栏保持为黑色?

Java 如何将状态栏设置为透明,但导航栏保持为黑色?,java,android,android-layout,android-statusbar,android-navigation-bar,Java,Android,Android Layout,Android Statusbar,Android Navigation Bar,正如我的问题所暗示的那样,我正在试图弄清楚如何将状态栏的颜色设置为透明,同时保持导航栏的黑色/自然色(不影响屏幕高度) 我提到这个网站: 部分有效的解决方案之一是: getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); 但这会将我的屏幕内容推到导航栏下方,使其透明。我希望屏幕大小保持不变,同时保持导航栏的自

正如我的问题所暗示的那样,我正在试图弄清楚如何将状态栏的颜色设置为透明,同时保持导航栏的黑色/自然色(不影响屏幕高度) 我提到这个网站: 部分有效的解决方案之一是:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
但这会将我的屏幕内容推到导航栏下方,使其透明。我希望屏幕大小保持不变,同时保持导航栏的自然颜色。只是想使状态栏透明,但似乎所有其他方法都会使其变为白色,即使我使用(
setstatusbarcolor
选项)将其设置为透明

有什么办法吗?我的min SDK版本是23

第二个视图是在状态栏工作的上方添加代码后的视图,但屏幕在下方滑动,使导航栏透明(即使设置
fitsystemwindows=false
也没有帮助)


提前谢谢

您需要在活动主题中添加以下样式

style.xml
中找到活动的主题并添加以下内容。因为在您的情况下,SDK的最低版本是23,所以您不必担心以前版本的Android

<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowTranslucentStatus">true</item>
false
真的
这是我得到的截图

这是我的案例中的主题风格

<style name="NoActionBar" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowDrawsSystemBarBackgrounds">false</item>
    <item name="android:windowTranslucentStatus">true</item>
</style>

假的
真的
假的
真的

希望这能解决你的问题。

试着做下面提到的事情可能会对你的例子有所帮助。如果你们仍然面临这个问题,请告诉我。如果它能解决您的问题,请提供答案

AndroidManifest.xml


values-v23\style.xml


@android:彩色/透明
真的
Activity.java

private static void setWindowFlag(活动活动,布尔开启){
Window win=activity.getWindow();
WindowManager.LayoutParams winParams=win.getAttributes();
如果(打开){
winParams.flags |=WindowManager.LayoutParams.FLAG_半透明_状态;
}否则{
winParams.flags&=~WindowManager.LayoutParams.FLAG_半透明_状态;
}
win.setAttributes(winParams);
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//检查Android版本是否为棉花糖或更高版本
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.M){
int newUiOptions=getWindow().getDecorView().getSystemUiVisibility();
newUiOptions^=View.SYSTEM\u UI\u FLAG\u沉浸式\u STICKY;
getWindow().getDecorView().SetSystemMivibility(新UI选项
|视图。系统(用户界面、标志、布局、全屏);
}
//检查Android版本是否为棒棒糖或更高版本
else if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.LOLLIPOP){
getWindow().getDecorView().SetSystemMivibility(视图、系统、用户界面、标志、布局)
|视图。系统(用户界面、标志、布局、全屏);
setWindowFlag(此,false);
getWindow().setStatusBarColor(ContextCompat.getColor(this,R.color.colorTransparent));
}
super.onCreate(savedInstanceState);
}

我还不太确定这个问题。如果你能添加一些你现在拥有的东西和你想要的东西的图片,那将是非常好的。你能检查我的答案并让我知道这是否是你的问题吗screenshots@ReazMurshed在上面添加了截图,希望能让它更清晰。截图非常完美。感谢附上它们。:)它会在整个应用程序中应用吗?我希望将其应用于一项活动。其余的活动都很好。让我知道这是否会影响其他任何事情。这只影响一项活动。如果你在其他活动中附加了相同的主题,那么它将影响其他活动。但是,您可以考虑为这种行为创建一个单独的主题。我的应用程序的最小SDK版本是23。我是否仍然需要分离出值-v21?此外,我在我的样式和引用中添加了上述代码,并将其作为style=“@style/SignupActivity”添加到我的活动中。不走运。哦。。。如果您有SDK 23,则在正常的
style.xml
文件中添加
values-21
的代码,当然,您不需要为
v-21
添加其他文件夹。我在这里有一个类似的设置,我想它在我的情况下工作。奇怪。不知道为什么它会引起我的问题。与你在另一个问题中发布的布局相同。我想知道是否有丢失的链接