多媒体网站建设,地产建站规划,厦门关键词排名提升,影响网站速度的代码推荐:https://github.com/gyf-dev/ImmersionBar 在 Android 中要实现特定 Activity 内容顶部显示在状态栏底部以及封装方法修改状态栏颜色#xff0c;可以通过以下步骤来完成#xff1a; 一、让 Activity 内容显示在状态栏底部 在 AndroidManifest.xml 文件中#xff0c;为特…推荐:https://github.com/gyf-dev/ImmersionBar 在 Android 中要实现特定 Activity 内容顶部显示在状态栏底部以及封装方法修改状态栏颜色可以通过以下步骤来完成 一、让 Activity 内容显示在状态栏底部 在 AndroidManifest.xml 文件中为特定的 Activity 设置主题主题中可以设置窗口属性使得状态栏透明
activity android:name.YourActivityandroid:themestyle/TransparentStatusBarTheme
/activity创建一个主题样式文件 styles.xml如果已有则在其中添加
style nameTransparentStatusBarTheme parentTheme.AppCompat.Light.NoActionBaritem nameandroid:windowTranslucentStatustrue/item
/styleActivity 的布局文件根布局中设置 fitsSystemWindows 属性为 true这样可以让布局适应系统窗口包括状态栏
在 Activity 的 onCreate 方法中通过代码设置状态栏透明 if (Build.VERSION.SDK_INT Build.VERSION_CODES.LOLLIPOP) {Window window getWindow();window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);window.setStatusBarColor(Color.TRANSPARENT);
}二、封装修改状态栏颜色的方法 创建一个工具类 StatusBarUtils public class StatusBarUtils {public static void setStatusBarColor(Activity activity, int color) {if (Build.VERSION.SDK_INT Build.VERSION_CODES.LOLLIPOP) {Window window activity.getWindow();window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);window.setStatusBarColor(color);}}
}在需要修改状态栏颜色的地方调用这个方法 StatusBarUtils.setStatusBarColor(this, Color.RED); // 将状态栏颜色设置为红色通过以上步骤就可以实现特定 Activity 内容顶部显示在状态栏底部并可以方便地通过封装的方法修改状态栏颜色。 import android.app.Activity;
import android.os.Build;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;public class StatusBarUtils {/*** StatusBarUtils.setStatusBarColor(this, Color.RED); // 将状态栏颜色设置为红色*/public static void setStatusBarColor(Activity activity, int statusBarBgcolor, boolean isLightStatus) {Window window activity.getWindow();window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);window.setStatusBarColor(statusBarBgcolor);View decorView window.getDecorView();int flags decorView.getSystemUiVisibility();if (isLightStatus) {// 设置为浅色模式黑色文字flags | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;} else {// 设置为深色模式白色文字flags ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;}decorView.setSystemUiVisibility(flags);}/*** 判断当前活动的状态栏是否为浅色。** param activity 活动实例* return 如果状态栏为浅色返回 true否则返回 false。*/private static boolean isLightStatusBar(Activity activity) {try {View decorView activity.getWindow().getDecorView();int flags decorView.getSystemUiVisibility();return (flags View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) ! 0;} catch (Exception e) {e.printStackTrace();return false;}}private static void setLightStatusBar(Activity activity, boolean isLightStatus) {if (Build.VERSION.SDK_INT Build.VERSION_CODES.M isLightStatus ! isLightStatusBar(activity)) {View decorView activity.getWindow().getDecorView();int flags decorView.getSystemUiVisibility();if (isLightStatus) {flags | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;} else {flags ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;}decorView.setSystemUiVisibility(flags);}}}