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

Commit 0e16422e authored by Fabian Kozynski's avatar Fabian Kozynski Committed by Automerger Merge Worker
Browse files

Merge "Fix clipping of SecondaryLabel on animation" into sc-dev am: b2a201b7

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15176788

Change-Id: I51bd469b5771edfa5d6c07c186458ccf8d18c316
parents 7a696a23 b2a201b7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -383,6 +383,7 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha
                    mOtherTilesExpandAnimator.addView(tileView);
                    tileView.setClipChildren(true);
                    tileView.setClipToPadding(true);
                    firstPageBuilder.addFloat(tileView.getSecondaryLabel(), "alpha", 0, 1);
                }

                mAllViews.add(tileView);
+15 −2
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ import android.widget.LinearLayout
/**
 * [LinearLayout] that can ignore the last child for measuring.
 *
 * The view is measured as regularlt, then if [ignoreLastView] is true:
 * The view is measured as regularly, then if [ignoreLastView] is true:
 * * In [LinearLayout.VERTICAL] orientation, the height of the last view is subtracted from the
 * final measured height.
 * * In [LinearLayout.HORIZONTAL] orientation, the width of the last view is subtracted from the
@@ -41,8 +41,21 @@ class IgnorableChildLinearLayout @JvmOverloads constructor(

    var ignoreLastView = false

    /**
     * Forces [MeasureSpec.UNSPECIFIED] in the direction of layout
     */
    var forceUnspecifiedMeasure = false

    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec)
        val actualWidthSpec = if (forceUnspecifiedMeasure && orientation == HORIZONTAL) {
            MeasureSpec.makeMeasureSpec(widthMeasureSpec, MeasureSpec.UNSPECIFIED)
        } else widthMeasureSpec

        val actualHeightSpec = if (forceUnspecifiedMeasure && orientation == VERTICAL) {
            MeasureSpec.makeMeasureSpec(heightMeasureSpec, MeasureSpec.UNSPECIFIED)
        } else heightMeasureSpec

        super.onMeasure(actualWidthSpec, actualHeightSpec)
        if (ignoreLastView && childCount > 0) {
            val lastView = getChildAt(childCount - 1)
            if (lastView.visibility != GONE) {
+5 −0
Original line number Diff line number Diff line
@@ -189,6 +189,11 @@ open class QSTileViewImpl @JvmOverloads constructor(
        secondaryLabel = labelContainer.requireViewById(R.id.app_label)
        if (collapsed) {
            labelContainer.ignoreLastView = true
            // Ideally, it'd be great if the parent could set this up when measuring just this child
            // instead of the View class having to support this. However, due to the mysteries of
            // LinearLayout's double measure pass, we cannot overwrite `measureChild` or any of its
            // sibling methods to have special behavior for labelContainer.
            labelContainer.forceUnspecifiedMeasure = true
            secondaryLabel.alpha = 0f
            // Do not marque in QQS
            label.ellipsize = TextUtils.TruncateAt.END