欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android 开发中状态栏的颜色、样式等修改教程!

程序员文章站 2022-05-31 08:20:12
android 开发中状态栏的颜色、样式等修改教程!第一种是设置特定颜色的状态栏,不是渐变透明的在清单文件里面的apilication使用。

android 开发中状态栏的颜色、样式等修改教程!第一种是设置特定颜色的状态栏,不是渐变透明的在清单文件里面的apilication使用。

<application  android:name=".tntapplication"  android:allowbackup="true"  android:icon="@mipmap/ic_launcher"  android:label="@string/app_name"  android:supportsrtl="true"  android:theme="@style/apptheme">
<style name="apptheme" parent="theme.appcompat.light.noactionbar">
    
    <item name="colorprimary">@color/colorprimarydarkitem>
    <item name="colorprimarydark">@color/colorprimarydarkitem>
    <item name="coloraccent">@color/coloraccentitem>
    <item name="actionmenutextcolor">@color/colorffffffitem>
    <item name="android:windowtranslucentnavigation" tools:ignore="newapi">falseitem>

style>

1.colorprimary 应用的主要色调,actionbar默认使用该颜色,toolbar导航栏的底色

2.colorprimarydark 应用的主要暗色调,statusbarcolor默认使用该颜色

3.coloraccent 为edittext,checkbox,radiobutton,switchcompat等一般控件的选中效果默认采用该颜色,比如光标

4.actionmenutextcolor 菜单栏的字体颜色

第二种,设置渐变透明的状态栏,底部有虚拟按钮时会自动顶起,

getwindow().requestfeature(window.feature_no_title);
window window = getwindow();
//4.4版本及以上
if (build.version.sdk_int >= build.version_codes.kitkat) {
    window.setflags(windowmanager.layoutparams.flag_translucent_status,
            windowmanager.layoutparams.flag_translucent_status);
    // translucent navigation bar
    window.setflags(
            windowmanager.layoutparams.flag_translucent_status,
            windowmanager.layoutparams.flag_translucent_navigation);
}
//5.0版本及以上
if (build.version.sdk_int >= build.version_codes.lollipop) {
    window.clearflags(windowmanager.layoutparams.flag_translucent_status
            | windowmanager.layoutparams.flag_translucent_status);
    window.getdecorview().setsystemuivisibility(view.system_ui_flag_layout_fullscreen
            | view.system_ui_flag_layout_stable);
    window.addflags(windowmanager.layoutparams.flag_draws_system_bar_backgrounds);
    window.setstatusbarcolor(color.transparent);

放在baseactivity就可以了