/* * Copyright (c) 2015 Zhang Hai <Dreaming.in.Code.ZH@Gmail.com> * All Rights Reserved. */ package me.zhanghai.android.douya.ui; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.support.design.widget.NavigationView; import android.util.AttributeSet; import android.view.View; import android.view.WindowInsets; /** * A {@link NavigationView} that draws no scrim and dispatches window insets correctly. * <p> * {@code android:fitsSystemWindows="true"} will be ignored. * </p> */ public class FullscreenNavigationView extends NavigationView { public FullscreenNavigationView(Context context) { super(context); init(); } public FullscreenNavigationView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public FullscreenNavigationView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } @TargetApi(Build.VERSION_CODES.KITKAT_WATCH) private void init() { // Required to revert the value of fitsSystemWindows set in super constructor. setFitsSystemWindows(false); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) { setOnApplyWindowInsetsListener(new OnApplyWindowInsetsListener() { @Override @TargetApi(Build.VERSION_CODES.KITKAT_WATCH) public WindowInsets onApplyWindowInsets(View view, WindowInsets insets) { if (getHeaderCount() == 0) { return FullscreenNavigationView.this.onApplyWindowInsets(insets); } return getHeaderView(0).onApplyWindowInsets(insets); } }); } } }