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 Original line Diff line number Diff line
@@ -23,7 +23,6 @@
    android:clickable="true"
    android:clickable="true"
    android:orientation="vertical"
    android:orientation="vertical"
    android:layout_marginTop="@*android:dimen/quick_qs_offset_height"
    android:layout_marginTop="@*android:dimen/quick_qs_offset_height"
    android:layout_marginBottom="@dimen/qs_container_bottom_padding"
    android:paddingBottom="8dp"
    android:paddingBottom="8dp"
    android:visibility="invisible"
    android:visibility="invisible"
    android:elevation="4dp"
    android:elevation="4dp"
+1 −2
Original line number Original line Diff line number Diff line
@@ -17,7 +17,7 @@
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/quick_settings_container"
    android:id="@+id/quick_settings_container"
    android:layout_width="match_parent"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_height="match_parent"
    android:clipToPadding="false"
    android:clipToPadding="false"
    android:clipChildren="false" >
    android:clipChildren="false" >


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


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


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

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


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


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


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


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


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