首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android更改工具栏颜色和状态栏颜色,但保留状态栏阴影

在Android中,可以通过以下步骤来更改工具栏颜色和状态栏颜色,并保留状态栏阴影:

  1. 首先,在你的项目的res/values目录下的styles.xml文件中,创建一个新的主题或修改现有的主题。例如,可以在styles.xml文件中添加以下代码:
代码语言:xml
复制
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- 更改工具栏颜色 -->
    <item name="colorPrimary">#FF0000</item>
    <!-- 更改状态栏颜色 -->
    <item name="colorPrimaryDark">#00FF00</item>
</style>

在上面的代码中,colorPrimary用于更改工具栏的颜色,colorPrimaryDark用于更改状态栏的颜色。

  1. 接下来,在你的AndroidManifest.xml文件中,将你的应用程序的主题设置为刚刚创建或修改的主题。例如:
代码语言:xml
复制
<application
    android:theme="@style/AppTheme">
    ...
</application>
  1. 最后,在你的Activity的onCreate方法中,调用以下方法来保留状态栏阴影:
代码语言:java
复制
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    getWindow().setStatusBarColor(Color.TRANSPARENT);
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}

上述代码中,setStatusBarColor(Color.TRANSPARENT)用于将状态栏设置为透明,getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)用于设置状态栏文字为深色。

至此,你已经成功地更改了工具栏颜色和状态栏颜色,并保留了状态栏阴影。

在腾讯云的相关产品中,可以使用腾讯云移动开发套件(https://cloud.tencent.com/product/mobdevsuite)来进行Android应用的开发和部署。该套件提供了丰富的移动开发工具和服务,包括移动应用开发平台、移动测试平台、移动推送服务等,可以帮助开发者快速构建和发布高质量的Android应用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android构建Material Design应用详解

长久以来。Android的UI并不算美观,以至于很多IT公司在进行界面设计的时候,为了保证双平台的统一性,强烈要求Android端的界面风格必须与iOS端一致,我认为这里非常不合理的,同一操作系统中各个应用之间的界面统一性要远比一个应用在双平台的界面统一性重要的多,只有这样,才能给使用者带来更好的用户体验。为了解决这个问题,Google公司在2014年IO大会上推出了一套全新的界面设计语言——Material Design(材料设计语言),这次Google在界面设计上确实下足了功夫,一个词,好看。并且在2015年IO大会上推出了一个Design Support库,这个库将Material Design中最具代表性的一些控件和效果进行了封装,使得开发者在不了解Material Design的情况下也可以轻松地将自己的应用Material化。

01

Android开发笔记(一百六十三)高仿京东的沉浸式状态栏

前面的文章介绍了如何实现广告轮播的Banner效果,本想可以告一段落。然而某天产品经理心血来潮,拿着苹果手机,要求像iOS那样把广告图顶到状态栏这儿。刚接到这需求,不禁倒吸一口冷气,又要安卓开发去实现iOS的效果,真是强人所难。翻了翻资料,发现修改状态栏的颜色倒是可行,但要把轮播图顶上去就不容易了。再瞅瞅淘宝和当当,原来两个大厂的App都没做出这个效果。正想跟产品经理说这个实现不了,谁料产品大姐笑盈盈地走过来,指着手机说道:“你看,做成京东这样就行了。”盯着手机看了半晌,京东这厮还真的让轮播图插进状态栏了,于是瞬间石化。下面是京东App的首页头部截图:

02

全屏、沉浸式、fitSystemWindow使用及原理分析:全方位控制“沉浸式”的实现

状态栏与导航栏属于SystemUi的管理范畴,虽然界面的UI会受到SystemUi的影响,但是,APP并没有直接绘制SystemUI的权限与必要。APP端之所以能够更改状态栏的颜色、导航栏的颜色,其实还是操作自己的View更改UI。可以这么理解:状态栏与导航栏拥有自己独立的窗口,而且这两个窗口的优先级较高,会悬浮在所有窗口之上,可以把系统自身的状态栏与导航栏看做全透明的,之所有会有背景颜色,是因为下层显示界面在被覆盖的区域添加了颜色,之后,通过SurfaceFlinger的图层混合,好像是状态栏、导航栏自身有了背景色。看一下一个普通的Activity展示的时候,所对应的Surface(或者说Window也可以)。

04

三句代码创建全屏Dialog或者DialogFragment:带你从源码角度实现全屏Dialog

Dialog是APP开发中常用的控件,同Activity类似,拥有独立的Window窗口,但是Dialog跟Activity还是有一定区别的,最明显的就是:默认情况下Dialog不是全屏的,所以布局实现不如Activity舒服,比如顶部对齐,底部对齐、边距、宽度、高度等。如果将Dialog定义成全屏的就会省去很多问题,可以完全按照常用的布局方式来处理。网上实现方式有不少,一般情况下也都能奏效,不过可能会有不少疑虑,比如:为什么有些窗口属性(隐藏标题)必须要在setContentView之前设置才有效,相反,也有些属性(全屏)要在之后设置才有效。这里挑几个简单的实现方式,然后说下原因,由于Android的窗口管理以及View绘制是挺大的一块,这里不过多深入。先看实现效果:

04
领券