Android4.4、Android5.0+狀態列顏色、透明等設定
Android 4.4
Manifest檔案Activity的Theme設定:
[html] view plain copy print?- <stylename="theme_main"parent="android:Theme">
- <!-- 隱藏系統標題欄 -->
- <itemname="android:windowNoTitle">true</item>
- <!-- 透明標題欄 -->
-
<itemname="android:windowTranslucentStatus"
- </style>
程式碼中設定:
[java] view plain copy print?- if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- Window window = getWindow();
- window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
- }
以上設定都是讓狀態列透明,讓頁面佈局從狀態列開始,如果想改變狀態列顏色需要在頁面佈局的最外層加入
android:fitsSystemWindows="true"
或者是在程式碼里加入
[java] view plain copy print?- <span style="font-size:14px;">if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- Window window = getWindow();
-
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
- //set child View not fill the system window
- ViewGroup mContentView = (ViewGroup) findViewById(Window.ID_ANDROID_CONTENT);
- View mChildView = mContentView.getChildAt(0);
- if (mChildView != null) {
- ViewCompat.setFitsSystemWindows(mChildView, true);
- }
- }</span>
注:必須是在setContentView()以後執行
狀態列的顏色以最外層佈局的背景色為準。
Android 5.0+
1.在Manifest檔案中配置Activity的theme,設定狀態列顏色,主題顏色等。
[html] view plain copy print?
- <stylename="AppBaseTheme"parent="android:ThemeOverlay.Material.Dark.ActionBar">
- <!-- 隱藏系統標題欄 -->
- <itemname="android:windowNoTitle">true</item>
- <!-- Main theme colors -->
- <!-- App主題顏色(滑動陰影等) your app's branding color (for the app bar)-->
- <itemname="android:colorPrimary">#FF6600</item>
- <!-- 狀態列顏色 darker variant of colorPrimary (for status bar, contextual app bars) -->
- <itemname="android:colorPrimaryDark">#e86053</item>
- <!-- 控制元件主題樣式(例如EditText,CheckBox,RadioButton等) theme UI controls like checkboxes and text fields -->
- <itemname="android:colorAccent">#BFDF0F</item>
- <!-- 系統預設控制元件樣式 -->
- <!-- 點選時顏色 -->
- <!--<item name="android:colorControlHighlight">#0000FF</item>-->
- <!-- 正常狀態下顏色 -->
- <!--<item name="android:colorControlNormal">#FF0000</item>-->
- <!-- 選中時顏色 -->
- <!--<item name="android:colorControlActivated">#00FF00</item>-->
- </style>
2.在程式碼中設定狀態列顏色
[java] view plain copy print?- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- Window window = getWindow();
- //After LOLLIPOP not translucent status bar
- window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
- //Then call setStatusBarColor.
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
- window.setStatusBarColor(Color.BLUE);
- }
3.設定狀態列透明(目前只找到在程式碼中設定)
[java] view plain copy print?- if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- Window window = getWindow();
- window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
- | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
- 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);
- }
FLAG_TRANSLUCENT_STATUS //透明狀態列
FLAG_TRANSLUCENT_NAVIGATION //透明導航欄
* setSystemUiVisibility這個方法引數表示的狀態比較多,具體如下:
1. View.SYSTEM_UI_FLAG_VISIBLE:顯示狀態列,Activity不全屏顯示(恢復到有狀態的正常情況)。
2. View.INVISIBLE:隱藏狀態列,同時Activity會伸展全屏顯示。
3. View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏顯示,且狀態列被隱藏覆蓋掉。
4. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏顯示,但狀態列不會被隱藏覆蓋,狀態列依然可見,Activity頂端佈局部分會被狀態遮住。
5. View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
6. View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
7. View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隱藏虛擬按鍵(導航欄)。有些手機會用虛擬按鍵來代替物理按鍵。
8. View.SYSTEM_UI_FLAG_LOW_PROFILE:狀態列顯示處於低能顯示狀態(low profile模式),狀態列上一些圖示顯示會被隱藏。
* window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
Flag表明這個視窗負責繪製系統狀態列標題欄的背景。如果設定,系統bar繪製成透明背景,在這個視窗相應的地方會填充{@link Window#getStatusBarColor()}和 {@link Window#getNavigationBarColor()}對應的顏色。
虛擬按鍵相關設定
api >= 19 [html] view plain copy print?- <spanstyle="font-size:12px;"><itemname="android:windowTranslucentNavigation">true</item></span>
- if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- Window window = getWindow();
- window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
- }
[java] view plain copy print?
- if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- Window window = getWindow();
- window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
- window.getDecorView().setSystemUiVisibility(
- View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
- );
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
- window.setNavigationBarColor(Color.TRANSPARENT);
- // window.setNavigationBarColor(Color.BLUE);
- }
- }
更改狀態列字型顏色為深色(Android6.0 +)
[html] view
plain copy
print?
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
- }
相關推薦
Android4.4、Android5.0+狀態列顏色、透明等設定
Android 4.4 Manifest檔案Activity的Theme設定: [html] view plain copy print? <stylename="theme_main"parent="android:Theme">
android4.4以上沉浸式狀態列和導航欄實現以及Bar的其他管理
自從android4.4開始,android手機狀態列再也不是一成黑的時代,之前叫做變色龍,miui6釋出會把他叫做沉浸式,之後大家就自然而然的接受了沉浸式這個名稱,其實實際應該叫做Translucent Bar,即為透明狀態列。 沉浸式實現原理其實是使整個activity佈局延伸到整個螢幕,然
android沉浸式狀態列、變色狀態列、透明狀態列、修改狀態列顏色及透明
首先我要區分清楚沉浸式狀態列與變色狀態列。 沉浸式狀態列指的是,狀態列隱藏,在手指做了相關操作後,狀態列顯示出來,例如視訊播放器,在播放視訊時是隱藏狀態列的,但是點選螢幕的時候,狀態列會顯示出來,再例如文字閱讀器,在閱讀的時候是全屏的,然後從螢幕上方下滑或者下
flutter 修改狀態列顏色 不透明 半透明
// 以下兩行 設定android狀態列為透明的沉浸。寫在元件渲染之後,是為了在渲染後進行set賦值,覆蓋狀態列,寫在渲染之前MaterialApp元件會覆蓋掉這個值。 void main() { runApp(new MyApp()); SystemUiOverlayStyle systemUiO
android 狀態列顏色的兩種設定模式
現在的很多app的狀態列的顏色A都設定的跟ActionBar顏色一樣,這樣看起來會比較舒服一些,也比較美觀,不會覺得上面禿了一塊,特別是強迫症患者。。 像圖片這樣。。看起來很不爽,所以就看看能不能設定成自己喜歡的顏色。然後就去搜一下關於這方面的知識,當然了,這方面的知識多
Android中 4.4-5.0 系統狀態列顏色的修改。實現Translucent System Bar
在這裡我們使用一種簡單的方法,之前在網上也看過類似的實現方法,一種是直接在程式碼裡面去設定,還有一種直接修改主題的樣式,個人感覺後面一種比較方便,也容易理解,在這裡就介紹一下第二種方法。 首先要到AndroidManifest中為指定的Activity去設定Theme,不過我們不能在values/s
Android5.0沉浸式狀態列,以及動態改變狀態列顏色
設定狀態列完全不可見 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIn
Android實現修改狀態列背景、字型和圖示顏色的方法
前言: Android開發,對於狀態列的修改,實在是不友好,沒什麼api可以用,不像ios那麼方便.但是ui又喜歡只搞ios一套.沒辦法.各種翻原始碼,寫反射.真的蛋疼. 需求場景: 當toolbar及狀態列需要為白色或淺色時(如簡書),狀態列由於用的Light風格Theme,字型,
Qt android 設定系統狀態列為全透明,半透明、全屏,設定狀態列顏色,修改程式圖示
實現Qt平臺下,安卓系統狀態列的相關設定(全透明,半透明、全屏,設定狀態列顏色,修改程式圖示,網上文章大多數提供多種方法,但是講述的雲裡霧裡,沒有說清楚,以下是本人自己整理,希望大家相互交流學習) 實驗環境: Qt 5.12 程式語言:qml 和 c++ 執行平臺:android 正
狀態列顏色顯示(字型、背景)
ios上狀態列 就是指的最上面的20畫素高的部分 狀態列分前後兩部分,要分清這兩個概念,後面會用到: 前景部分:就是指的顯示電池、時間等部分; 背景部分:就是顯示黑色或者圖片的背景部分; 如下圖:前景部分為白色,背景部分為黑色 注意:這裡只涉及到ios7以
90、setStatusBarStyle無效問題 修改狀態列顏色 只有白色黑色可選UIStatusBarStyleLightContent
info.plist檔案中, View controller-based status bar appearance項設為YES,則View controller對status bar的設定優先順序
iOS9.0修改狀態列顏色
1.將 View controller-based status bar appearance 刪除(預設為 YES),或設定為YES 2.設定rootViewcontroller,如果為viewController,那麼重寫下面的方法 -(UIStatu
nativescript修改android的狀態列顏色
if (app.android && Platform.device.sdkVersion >= '21') { let window = app.android.startActivity.getWindow(); window.setStatusBarCo
iOS 更改狀態列顏色和隱藏狀態列
更改狀態列顏色 iOS7以後 狀態列的字型為黑色:UIStatusBarStyleDefault 狀態列的字型為白色:UIStatusBarStyleLightContent 解決方案 1、在info.plist中,將View controller-based status bar appea
Android中沉浸式狀態列,改變狀態列顏色類似QQ樣式
1、使用該功能需要使用到第三方庫SystemBarTint 下載地址:https://github.com/jgilfelt/SystemBarTint 2、需要在AndroidMainfest檔案中Application設定樣式 android:the
android狀態列顏色與沉浸式適配
需求場景:設定狀態列顏色與設定沉浸式在同一個Activity互相切換 設定狀態列顏色 小米或魅族通過私有方法可以自己設定(4.4以上版本) /** * MIUI的沉浸支援透明白色字型和透明黑色字型 * https://dev.m
android設定狀態列顏色為深色
public boolean setDeepStatusBar(boolean isChange,Activity mActivity) { if (!isChange){ return false; } if(Build.VERSI
移動開發---更改狀態列顏色
private void setStatusBarColor(int color) { if (color == 0) return; if (Build.VERSION.SDK_INT >= 21) {
kotlin設定actionbar和狀態列顏色一致
首先在mainfest檔案中設定主題: android:theme="@style/AppTheme 接下來去看看:這個主題繼承了theme.M。。。的樣式 下面item是自定義的會覆蓋父類樣式,
android狀態列一體化、沉浸式狀態列(相容低版本)
<TextView android:id="@+id/tv_title" android:layout_centerVertical="true" android:layout_width="match_parent"