如何在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中为状态栏设置颜色所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)