導航:首頁 > 操作系統 > 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標題欄和狀態欄相關的資料

熱點內容
服從命令圖片動畫片 瀏覽:191
Web與雲伺服器的區別 瀏覽:996
linux沒有rz 瀏覽:305
理正勘察加密鎖 瀏覽:698
安卓程序結構是什麼 瀏覽:297
活塞式壓縮機檢修規程 瀏覽:762
伺服器未響怎麼辦 瀏覽:698
超短指標公式源碼 瀏覽:708
什麼是opc的客戶端和伺服器 瀏覽:33
ug編程指令軟體自學網 瀏覽:290
android板子 瀏覽:751
單機版ERP系統怎麼用伺服器 瀏覽:472
編程序實現兩個變數值的交換 瀏覽:501
qt移植到linux 瀏覽:998
php常用數據結構 瀏覽:879
泰拉瑞亞伺服器為什麼別人進不來 瀏覽:743
app鎖定怎麼解開 瀏覽:464
怎麼查看郵件源碼 瀏覽:880
小說推薦網源碼 瀏覽:201
怎麼樣搞垮別人的app軟體 瀏覽:519