導航:首頁 > 操作系統 > android標題欄和狀態欄

android標題欄和狀態欄

發布時間:2024-07-16 02:29:05

android 開發 如何去掉手機的上邊的狀態欄

在開發中經常需要把應用設置為全屏,這需要去掉標題欄和狀態欄;一般有兩種方法,一是在代碼中設置,另一種方法是在配置文件里設置。

一、在代碼中設置:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//去除title
requestWindowFeature(Window.FEATURE_NO_TITLE);
//去掉Activity上面的狀態欄
getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN , WindowManager.LayoutParams. FLAG_FULLSCREEN);
setContentView(R.layout.main);
}
其中起主要作用的兩個語句:
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//隱去電池等圖標和一切修飾部分(狀態欄部分)
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//隱去標題欄(程序的名字)

在這里要強調一點,設置全屏的倆段代碼必須在setContentView(R.layout.main)之前,不然會報錯.

二、在配置文件里設置

(關鍵代碼:android:theme="@android:style/Theme.NoTitleBar.Fullscreen",如果想只是去除標題欄就後面不用加Fullscreen了,另外,如果想要整個應用都去除標題欄和狀態欄,就把這句代碼加到<application..標簽裡面,如果只是想某個activity起作用,這句代碼就加到相應的activity上):
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.demo"
android:versionCode="1"
android:versionName="1.0">
<application android:
icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name=".OpenGl_Lesson1"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

這里主要用到的Theme如下:
android:theme="@android:style/Theme.NoTitleBar" 隱去標題欄
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 隱去狀態欄

② Android 顯示、隱藏狀態欄和導航欄

Android 顯示、隱藏狀態欄和導航欄
控制狀態欄顯示,Activity的主題中配置全屏屬性

控制狀態欄顯示,在setContentView之前設置全屏的flag

控制狀態欄顯示,在任何位置通過添加和移除全屏的flag

控制狀態欄和導航欄顯示,setSystemUiVisibility

// 全屏展示

// 非全屏顯示,顯示狀態欄和導航欄

③ Android 沉浸式/透明式狀態欄、導航欄

Android 從4.4開始引進透明狀態欄和導航欄的概念,並且在5.0進行了改進,將透明變成了半透明的效果。雖然此特性最早出現在ios,但不否認效果還是很贊的。
至於4.4以下的手機,就不要考慮此特性了,好在4.4以下的手機份額已經非常小了。

我們先來看一下透明狀態欄的實現,兩種常見效果圖如下:

虛擬導航欄並不是所有的手機都有,華為的手機多比較常見,就是上圖屏幕底部按鈕那塊區域。設置導航欄和狀態欄類似:

這是官方的解釋,大致意思就是我們在布局的最外層設置 android:fitsSystemWindows="true",會在屏幕最上方預留出狀態欄高度的padding。

由於fitsSystemWindows屬性本質上是給當前控制項設置了一個padding,所以我們設置到根布局的話,會導致狀態欄是透明的,並且和窗口背景一樣。

但是多數情況,我們並不在根布局設置這個屬性,我們想要的無外乎是讓內容沉浸在狀態欄之中。所以我們經常設置在最上端的圖片背景、Banner之類的,如果是Toolbar的,我們可以使用一層LinearLayout包裹,並把這個屬性設置給LinearLayout,這樣就可以避免Toolbar的內容下沉了。如:

上述方法可以解決普通頁面的透明式狀態欄需求,如有復雜需求可以參考下面這些:
Android 系統狀態欄沉浸式/透明化完整解決方案
Android 沉浸式狀態欄的實現
Android沉浸式狀態欄(透明狀態欄)最佳實現
還有開源庫推薦: ImmersionBar

④ android導航欄與狀態欄顏色及透明度

首先創建一個空項目,如下圖

可以看到狀態欄是白字黑背景, 導航欄也是白圖標黑背景
嘿嘿, 我們先把狀態欄隱藏掉,在添加一個ImageView, 讓ImageView做背景(方便查看)

樣子如下:

將狀態欄和導航欄設置透明, 找到 Manifest.xml 文件, 在主題樣式中修改

android:statusBarColor 設置狀態欄背景色
android:navigationBarColor 同上
android:windowLightStatusBar 設置狀態欄文字色, true為深色, false為白色
android:windowLightNavigationBar 同上
android:windowTranslucentStatus 設置狀態欄半透明狀態, true為半透明, false為不透明
android:windowTranslucentNavigation 同上

最後兩個半透明狀態下面沒用, 可自己嘗試看效果

效果圖如下:

可以看到導航欄與狀態欄並沒有透明,原因是默認不能佔用狀態欄空間與導航欄空間,根布局背景為白色,所有這里顯示白色
可以通過設置 getWindow().getDecorView().setSystemUiVisibility() 來適配

View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 適配狀態欄空間
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 適配導航欄空間
效果如下:

閱讀全文

與android標題欄和狀態欄相關的資料

熱點內容
什麼app可以查到裝修 瀏覽:652
什麼魚的按摩app 瀏覽:501
雲電腦的伺服器網站 瀏覽:439
木工專用空氣壓縮機 瀏覽:179
synfloodlinux 瀏覽:85
linux卸載openssl 瀏覽:100
python爬蟲網址要求 瀏覽:966
什麼是金稅盤伺服器 瀏覽:437
phpsocket開發 瀏覽:509
caj文檔轉pdf 瀏覽:553
eclipsemaven命令配置 瀏覽:337
雅安視監控app叫什麼名字 瀏覽:731
東方財富app籌碼藍色和紅色是什麼 瀏覽:566
pr安裝文件夾圖標變白 瀏覽:179
如何用伺服器建設網站 瀏覽:349
定時鬧鍾單片機課程設計 瀏覽:537
腰椎壓縮性骨折症狀 瀏覽:466
絕地求生全軍出擊的伺服器什麼時候開 瀏覽:493
怎麼入侵游戲伺服器篡改數據 瀏覽:736
線性壓縮機原理 瀏覽:543