如何在android中为状态栏设置颜色

如何在android中为状态栏设置颜色,第1张

概述如何在android中为状态栏设置颜色?我在styles.xml和.java文件中都尝试过.如果我尝试在.java类中使用代码if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

如何在android中为状态栏设置颜色?

我在styles.xml和.java文件中都尝试过.

如果我尝试在.java类中使用代码

 if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.LolliPOP) {        getwindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYstem_bar_BACKGROUNDS);        getwindow().setStatusbarcolor(getResources().getcolor(color.DKGRAY));    }

我得到的异常称为:-ResourceNotFoundException

04-01 18:55:21.616: E/AndroIDRuntime(2169): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.cz/com.myapp.casenotez.updateCase}: androID.content.res.Resources$NotFoundException: Resource ID #0xff44444404-01 18:55:21.616: E/AndroIDRuntime(2169):     at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2416)04-01 18:55:21.616: E/AndroIDRuntime(2169):     at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)04-01 18:55:21.616: E/AndroIDRuntime(2169):     at androID.app.ActivityThread.-wrap11(ActivityThread.java)04-01 18:55:21.616: E/AndroIDRuntime(2169):     at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)04-01 18:55:21.616: E/AndroIDRuntime(2169):     at androID.os.Handler.dispatchMessage(Handler.java:102)04-01 18:55:21.616: E/AndroIDRuntime(2169):     at androID.os.Looper.loop(Looper.java:148)04-01 18:55:21.616: E/AndroIDRuntime(2169):     at androID.app.ActivityThread.main(ActivityThread.java:5417)04-01 18:55:21.616: E/AndroIDRuntime(2169):     at java.lang.reflect.Method.invoke(Native Method) 04-01 18:55:21.616: E/AndroIDRuntime(2169):    at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 04-01 18:55:21.616: E/AndroIDRuntime(2169):    at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:616) 04-01 18:55:21.616: E/AndroIDRuntime(2169): Caused by: androID.content.res.Resources$NotFoundException: Resource ID #0xff444444 04-01 18:55:21.616: E/AndroIDRuntime(2169):    at androID.content.res.Resources.getValue(Resources.java:1351) 04-01 18:55:21.616: E/AndroIDRuntime(2169):    at androID.content.res.Resources.getcolor(Resources.java:963) 04-01 18:55:21.616: E/AndroIDRuntime(2169):    at androID.content.res.Resources.getcolor(Resources.java:936) 04-01 18:55:21.616: E/AndroIDRuntime(2169):    at com.myapp.cz.updateCase.onCreate(updateCase.java:112) 04-01 18:55:21.616: E/AndroIDRuntime(2169):    at androID.app.Activity.performCreate(Activity.java:6237) 04-01 18:55:21.616: E/AndroIDRuntime(2169):    at androID.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 04-01 18:55:21.616: E/AndroIDRuntime(2169):    at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2369) 04-01 18:55:21.616: E/AndroIDRuntime(2169):    ... 9 more

我还尝试在styles.xml中添加样式: –

        
    

<!-- Application theme. --><style name="Apptheme" parent="AppBasetheme">    <!-- All customizations that are NOT specific to a particular API-level can go here. -->    <item name="androID:actionbarStyle">@style/MyActionbar</item></style><style name="MyActionbar" parent="@androID:style/Widget.Holo.light.Actionbar">    <item name="androID:background">#630</item>     <item name="androID:TitleTextStyle">       @style/MyActionbarTitle</item></style><style name="MyActionbarTitle" parent="@androID:style/TextAppearance">    <item name="androID:textcolor">@color/Blue</item></style>

解决方法:

color.DKGRAY已经是一个正确形成的颜色int.你可以使用

getwindow().setStatusbarcolor(color.DKGRAY);

如果要解析颜色资源ID,则只需使用Resources.getcolor(),如下所示:

<resources>    <color name="dark_gray">#ff444444</color></resources>getwindow().setBackgroundcolor(getResources.getcolor(R.color.dark_gray));

在这种情况下,R.color.dark_gray不是一个颜色int,它是一个资源ID.这就是区别.

编辑

您可以轻松地在主题中设置状态栏颜色.请注意,它仅对Lollipop及以上版本有效.您可以在KitKat上使用半透明状态栏.如果你这样做,你不需要任何java代码来设置窗口标志.

请注意,我假设您正在使用AppCompat库.如果你不是,你可能应该.

在res / values / styles.xml中:

<!-- Extend from any AppCompat theme --><style name="Apptheme" parent="theme.AppCompat">    <!-- put your theme customizations in here --></style><style name="Apptheme.TranslucentStatus" />

在res / values-19 / styles.xml中:

<style name="Apptheme.TranslucentStatus">    <item name="androID:windowTranslucentStatus">true</item></style>

在res / values-21 / styles.xml中:

<style name="Apptheme.TranslucentStatus">    <item name="androID:statusbarcolor">#ff444444</item></style>

在应该具有半透明状态栏的活动上使用Apptheme.TranslucentStatus.

总结

以上是内存溢出为你收集整理的如何在android中为状态栏设置颜色全部内容,希望文章能够帮你解决如何在android中为状态栏设置颜色所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1108255.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存