Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 89a6033e authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

Fix navbar clipping

Instead of clipping on the navbar, as the QS background takes the whole
screen, just have a padding the size of the navbar. That way, when the
QS container is scrolled completely to the bottom, no view is obstructed
by the nav bar.

Test: manual
Fixes: 187444362
Change-Id: If22f46a27d48066571ba5c2193c9f6e2e0c3fe24
parent 2c987129
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@
    android:clickable="true"
    android:orientation="vertical"
    android:layout_marginTop="@*android:dimen/quick_qs_offset_height"
    android:layout_marginBottom="@dimen/qs_container_bottom_padding"
    android:paddingBottom="8dp"
    android:visibility="invisible"
    android:elevation="4dp"
+1 −2
Original line number Diff line number Diff line
@@ -17,7 +17,7 @@
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/quick_settings_container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_height="match_parent"
    android:clipToPadding="false"
    android:clipChildren="false" >

@@ -25,7 +25,6 @@
        android:id="@+id/expanded_qs_scroll_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingBottom="@dimen/qs_container_bottom_padding"
        android:elevation="4dp"
        android:importantForAccessibility="no"
        android:scrollbars="none"
+0 −2
Original line number Diff line number Diff line
@@ -623,8 +623,6 @@

    <dimen name="qs_notif_collapsed_space">64dp</dimen>

    <dimen name="qs_container_bottom_padding">24dp</dimen>

    <!-- Desired qs icon overlay size. -->
    <dimen name="qs_detail_icon_overlay_size">24dp</dimen>

+12 −12
Original line number Diff line number Diff line
@@ -129,6 +129,12 @@ public class QSContainerImpl extends FrameLayout {
    @Override
    public WindowInsets onApplyWindowInsets(WindowInsets insets) {
        mNavBarInset = insets.getInsets(WindowInsets.Type.navigationBars()).bottom;
        mQSPanelContainer.setPaddingRelative(
                mQSPanelContainer.getPaddingStart(),
                mQSPanelContainer.getPaddingTop(),
                mQSPanelContainer.getPaddingEnd(),
                mNavBarInset
        );
        return super.onApplyWindowInsets(insets);
    }

@@ -138,8 +144,7 @@ public class QSContainerImpl extends FrameLayout {
        // bottom and footer are inside the screen.
        MarginLayoutParams layoutParams = (MarginLayoutParams) mQSPanelContainer.getLayoutParams();

        int availableScreenHeight = getDisplayHeight() - mNavBarInset;
        int maxQs = availableScreenHeight - layoutParams.topMargin - layoutParams.bottomMargin
        int maxQs = getDisplayHeight() - layoutParams.topMargin - layoutParams.bottomMargin
                - getPaddingBottom();
        int padding = mPaddingLeft + mPaddingRight + layoutParams.leftMargin
                + layoutParams.rightMargin;
@@ -148,10 +153,8 @@ public class QSContainerImpl extends FrameLayout {
        mQSPanelContainer.measure(qsPanelWidthSpec,
                MeasureSpec.makeMeasureSpec(maxQs, MeasureSpec.AT_MOST));
        int width = mQSPanelContainer.getMeasuredWidth() + padding;
        int height = layoutParams.topMargin + layoutParams.bottomMargin
                + mQSPanelContainer.getMeasuredHeight() + getPaddingBottom();
        super.onMeasure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
                MeasureSpec.makeMeasureSpec(availableScreenHeight, MeasureSpec.EXACTLY));
                MeasureSpec.makeMeasureSpec(getDisplayHeight(), MeasureSpec.EXACTLY));
        // QSCustomizer will always be the height of the screen, but do this after
        // other measuring to avoid changing the height of the QS.
        mQSCustomizer.measure(widthMeasureSpec,
@@ -196,13 +199,10 @@ public class QSContainerImpl extends FrameLayout {

    void updateResources(QSPanelController qsPanelController,
            QuickStatusBarHeaderController quickStatusBarHeaderController) {
        mQSPanelContainer.setPaddingRelative(
                mQSPanelContainer.getPaddingStart(),
                mContext.getResources().getDimensionPixelSize(
                        com.android.internal.R.dimen.quick_qs_offset_height),
                mQSPanelContainer.getPaddingEnd(),
                mContext.getResources().getDimensionPixelSize(R.dimen.qs_container_bottom_padding)
        );
        LayoutParams layoutParams = (LayoutParams) mQSPanelContainer.getLayoutParams();
        layoutParams.topMargin = mContext.getResources().getDimensionPixelSize(
                com.android.internal.R.dimen.quick_qs_offset_height);
        mQSPanelContainer.setLayoutParams(layoutParams);

        int sideMargins = getResources().getDimensionPixelSize(R.dimen.notification_side_paddings);
        int padding = getResources().getDimensionPixelSize(
+10 −2
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.util.SparseArray;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewStub;
import android.view.WindowInsets;
import android.view.accessibility.AccessibilityEvent;
import android.widget.ImageView;
import android.widget.LinearLayout;
@@ -153,11 +154,18 @@ public class QSDetail extends LinearLayout {
        MarginLayoutParams lp = (MarginLayoutParams) getLayoutParams();
        lp.topMargin = mContext.getResources().getDimensionPixelSize(
                com.android.internal.R.dimen.quick_qs_offset_height);
        lp.bottomMargin = mContext.getResources().getDimensionPixelSize(
                R.dimen.qs_container_bottom_padding);
        setLayoutParams(lp);
    }

    @Override
    public WindowInsets onApplyWindowInsets(WindowInsets insets) {
        int bottomNavBar = insets.getInsets(WindowInsets.Type.navigationBars()).bottom;
        MarginLayoutParams lp = (MarginLayoutParams) getLayoutParams();
        lp.bottomMargin = bottomNavBar;
        setLayoutParams(lp);
        return super.onApplyWindowInsets(insets);
    }

    public boolean isClosingDetail() {
        return mClosingDetail;
    }
Loading