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

Commit 497fa8b8 authored by Selim Cinek's avatar Selim Cinek Committed by Android (Google) Code Review
Browse files

Merge "Changed the way the ellipsizing of text is measured" into pi-dev

parents 9f3c57ed 4fefed2b
Loading
Loading
Loading
Loading
+27 −28
Original line number Diff line number Diff line
@@ -28,8 +28,6 @@ import android.view.RemotableViewMethod;
import android.widget.RemoteViews;
import android.widget.TextView;

import com.android.internal.R;

/**
 * A TextView that can float around an image on the end.
 *
@@ -44,9 +42,7 @@ public class ImageFloatingTextView extends TextView {
    /** Resolved layout direction */
    private int mResolvedDirection = LAYOUT_DIRECTION_UNDEFINED;
    private int mMaxLinesForHeight = -1;
    private boolean mFirstMeasure = true;
    private int mLayoutMaxLines = -1;
    private boolean mBlockLayouts;
    private int mImageEndMargin;

    public ImageFloatingTextView(Context context) {
@@ -122,30 +118,31 @@ public class ImageFloatingTextView extends TextView {

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int height = MeasureSpec.getSize(heightMeasureSpec);
        // Lets calculate how many lines the given measurement allows us.
        int availableHeight = height - mPaddingTop - mPaddingBottom;
        int maxLines = availableHeight / getLineHeight();
        maxLines = Math.max(1, maxLines);
        int availableHeight = MeasureSpec.getSize(heightMeasureSpec) - mPaddingTop - mPaddingBottom;
        if (getLayout() != null && getLayout().getHeight() != availableHeight) {
            // We've been measured before and the new size is different than before, lets make sure
            // we reset the maximum lines, otherwise we may be cut short
            mMaxLinesForHeight = -1;
            nullLayouts();
        }
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        Layout layout = getLayout();
        if (layout.getHeight() > availableHeight) {
            // With the existing layout, not all of our lines fit on the screen, let's find the
            // first one that fits and ellipsize at that one.
            int maxLines = layout.getLineCount() - 1;
            while (maxLines > 1 && layout.getLineBottom(maxLines - 1) > availableHeight) {
                maxLines--;
            }
            if (getMaxLines() > 0) {
                maxLines = Math.min(getMaxLines(), maxLines);
            }
        if (maxLines != mMaxLinesForHeight) {
            // Only if the number of lines is different from the current layout, we recreate it.
            if (maxLines != mLayoutMaxLines) {
                mMaxLinesForHeight = maxLines;
            if (getLayout() != null && mMaxLinesForHeight != mLayoutMaxLines) {
                // Invalidate layout.
                mBlockLayouts = true;
                setHint(getHint());
                mBlockLayouts = false;
            }
        }
                nullLayouts();
                super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            }

    @Override
    public void requestLayout() {
        if (!mBlockLayouts) {
            super.requestLayout();
        }
    }

@@ -157,7 +154,8 @@ public class ImageFloatingTextView extends TextView {
            mResolvedDirection = layoutDirection;
            if (mIndentLines > 0) {
                // Invalidate layout.
                setHint(getHint());
                nullLayouts();
                requestLayout();
            }
        }
    }
@@ -175,7 +173,8 @@ public class ImageFloatingTextView extends TextView {
        if (mIndentLines != lines) {
            mIndentLines = lines;
            // Invalidate layout.
            setHint(getHint());
            nullLayouts();
            requestLayout();
            return true;
        }
        return false;
+4 −4
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@
    >
    <include layout="@layout/notification_template_header" />

    <LinearLayout
    <com.android.internal.widget.RemeasuringLinearLayout
            android:id="@+id/notification_action_list_margin_target"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
@@ -34,7 +34,7 @@
            android:clipToPadding="false"
            android:orientation="vertical">

        <LinearLayout
        <com.android.internal.widget.RemeasuringLinearLayout
            android:id="@+id/notification_main_column"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
@@ -62,7 +62,7 @@
                android:visibility="gone"
                android:textAlignment="viewStart"
                />
        </LinearLayout>
        </com.android.internal.widget.RemeasuringLinearLayout>

        <ViewStub android:layout="@layout/notification_material_reply_text"
                android:id="@+id/notification_material_reply_container"
@@ -75,6 +75,6 @@
                android:layout_marginEnd="@dimen/notification_content_margin_end"
                android:layout_marginTop="@dimen/notification_content_margin" />
        <include layout="@layout/notification_material_action_list" />
    </LinearLayout>
    </com.android.internal.widget.RemeasuringLinearLayout>
    <include layout="@layout/notification_template_right_icon" />
</FrameLayout>