偽沉浸式狀態列和actionbar簡易使用

2021-08-09 16:22:07 字數 2109 閱讀 3728

話不多說,直接看效果圖

低版本android的api不支援,故實現條件 : android5.0以上,androidmanifest中minsdkversion至少21以上。

首先,activity設定自定義theme屬性,繼承

parent="@android:style/theme.holo.light"

actionbar實現使用自定義布局,背景為純色,

<?xml version="1.0" encoding="utf-8"?>

xmlns:android=""

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@color/colorprimary">

android:layout_width="24dp"

android:layout_height="24dp"

android:background="@drawable/common_icon_back"

android:layout_centervertical="true"

android:layout_marginleft="5dp"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerinparent="true"

android:text="actionbar的title"

android:textcolor="#fff"

android:textsize="20sp" />

relativelayout>

若為左右會有白色間距,需在actionbar的style中新增

name="contentinsetstart">0dpitem>

name="contentinsetend">0dpitem>

activity中加入**

actionbar actionbar=getactionbar();//獲取actionbar
actionbar.setcustomview(r.layout

.actionbar_title);//設定自定義布局

//actionbar所有的設定項為false,只顯示customview actionbar.setdisplayoptions(actionbar.display_show_custom);到這裡actionbar算是完成了,接著對狀態列進行處理。本文並不算是沉浸式狀態列,沉浸式效果如下兩種:

第二種為粘性沉浸式,進入程式時,自動隱藏了狀態列和導航欄。當使用者從頂部向下滑動就能撥出半透明的狀態列和導航欄。

實現**:

public void onwindowfocuschanged(boolean hasfocus)
本文直接設定狀態列顏色,簡單粗暴:

window window = activity.getwindow();

window.addflags(windowmanager.layoutparams

.flag_draws_system_bar_backgrounds);

以上廢棄getresources().getcolor()

window.setstatusbarcolor(contextcompat.getcolor(activity, r.color

.colorprimary));

全部實現就是綜上所述,有些其他功能實現細節之後補充。

沉浸式狀態列

1.沉浸式狀態列,向下相容到android4.4。因為5.0以後對狀態列做了新的改變,5.0及其以上可以直接在主題中設定顏色,或者呼叫window類中的setstatusbarcolor int color 來實現。2.4.4到5.0系統可以通過 windowtranslucentstatus這一特...

沉浸式狀態列

還好擼主機智,直接判斷你的android版本,根據版本設定導航欄的高度,是和尚就念經,是驢子就拉磨,下面是擼主的 true animated barstyle light content networkactivityindicatorvisible 導航欄,用的功能強大的第三方庫 native b...

沉浸式狀態列

狀態列透明方法 getwindow addflags windowmanager.layoutparams.flag translucent status 或 itemname android windowtranslucentstatus trueitem 第一種方法是在 中設定,在setcont...