2014年4月2日

【Android】關閉系統狀態列與App標題列 Close System status bar and App title bar

各位開發者大家好!^^

今天小黑人與大家分享的就是關於系統狀態列標題列的控制,原因就是許多開發者可能會因為App開發的需求要滿版全畫面製作,這樣就必須關閉系統狀態列與標題列,市面上也有許多App是屬於留系統狀態列關閉標題列的,也當然有兩者都保留的,所以今天小黑人向大家介紹如何簡單快速的隱藏系統狀態列與App標題列,讓我們繼續看下去!

其實要關閉系統狀態列與標題列有兩個地方可以進行關閉,分別為AndroidManifest.xml*.java檔裡,至於個別需要怎麼關閉呢,下方詳細向您說明 :

1.
一種是AndroidManifest.xml裡進行設定,在這裡控制系統列與標題列狀態時可以通用在全部的Activity上,也就是說在這裡寫一行控制就可以適用於整個App
:

a. 關閉系統列與關閉標題列 :
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

b.
開啟系統列與關閉標題列
:
android:theme="@android:style/Theme.NoTitleBar"

這一行只要加在application底下就可以了,下方為範例
:
<application

android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
>
...
...

2.
第二種就是在*.java裡進行撰寫,相對的必須在每個Activity都必須加入喔,不然會變成一個Activity有標題列或系統列而另一個Activity沒標題列之類的狀況,此方法是屬於個別加入的方法,比較適用於例如一開始要全畫面而後來要顯示系統列之類的不固定狀態畫面
:

//
關閉App標題列

requestWindowFeature(Window.FEATURE_NO_TITLE);

//關閉系統狀態列
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

只要個別加入就可以囉,兩者可以交互加入不會影響,像是有標題列沒系統列或有系統列沒標題列之類,下方為範例
:

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.main);
}

以上就是系統列與標題列的控制,只需要短短一兩行就可以進行設定囉!
謝謝大家如有任何問題都可以和小黑人一起交流討論

☆小黑人☆


5 則留言:

  1. 我在AndroidManifest.xm的application區塊設定requestWindowFeature(Window.FEATURE_NO_TITLE)
    執行到模擬器上(android2.2)與手機(android 4.4.4)一執行就會顯示錯誤訊息,
    需要強制關閉, 請問您有成功過嗎?

    回覆刪除
    回覆
    1. 您好,針對您的問題小黑人向您解釋,
      如果要在AndroidManifest.xml上做設定的話,需要加入這一段android:theme="@android:style/Theme.NoTitleBar.Fullscreen".
      如果要從程式端(.java)上做設定的話,就是加入您所說的這一段requestWindowFeature(Window.FEATURE_NO_TITLE)就可以正常執行,比較需要注意的地方是加入此段的位置必須要在setContentView(R.layout.main)前方,
      小黑人測試皆可執行程式,再麻煩您檢查看看,謝謝!
      感謝您的留言 ^^

      刪除
  2. 請問最底下那個有三個系統按鍵的叫啥名稱? (Back, Home, Apps)
    這一列有辦法隱藏嗎?
    若隱藏還有辦法在程式中教出來嗎?

    回覆刪除
    回覆
    1. 您好,根據您的提問小黑人與您解釋,
      其實小黑人接觸的手機裝置裡大多這三個按鍵(Back, Home, Apps)都是實體按鈕,
      然後試開模擬器也都是實體按鍵,所以小黑人本身也無法實際測試...
      您試試看android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"有沒有達到隱藏控制列的功能!

      感謝您的提問!

      刪除
  3. 請問兩種都試過,但都無法隱藏標題列,但狀態列可以!
    有能解決麻?

    回覆刪除

謝謝大家支持,有任何問題都可以和小黑人一起討論!