1. 程式人生 > >Android 讓頂部狀態列透明,虛擬按鍵欄不透明的方法

Android 讓頂部狀態列透明,虛擬按鍵欄不透明的方法

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 隱藏標題欄
        getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        View root = LayoutInflater.from(this).inflate(R.layout.activity_base, null);
        // 或者 在介面的根層加入 android:fitsSystemWindows=”true” 這個屬性,這樣就可以讓內容介面從 狀態列 下方開始。
ViewCompat.setFitsSystemWindows(root, true); setContentView(root); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // Android 5.0 以上 全透明 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_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); window.addFlags
(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); // 狀態列(以上幾行程式碼必須,參考setStatusBarColor|setNavigationBarColor方法原始碼) window.setStatusBarColor(Color.TRANSPARENT); // 虛擬導航鍵 // window.setNavigationBarColor(Color.TRANSPARENT); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // Android 4.4 以上 半透明 Window window = getWindow(); // 狀態列 window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // 虛擬導航鍵 // window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); } }

在onCreate方法中或者寫一個工具類直接呼叫就行.