From dcde3db33a05bad3f2b34ce0d5e913d46d5d466f Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Wed, 3 Jun 2020 16:03:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20ExpandTextView=20=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E6=B8=90=E9=9A=90=E5=B1=95=E5=BC=80=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E6=97=B6=E5=9C=A8=E9=83=A8=E5=88=86=E8=AE=BE=E5=A4=87=E4=B8=8A?= =?UTF-8?q?=E4=BC=9A=E6=8D=A2=E8=A1=8C=E6=98=BE=E7=A4=BA=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/view/ExpandTextView.java | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/gh/common/view/ExpandTextView.java b/app/src/main/java/com/gh/common/view/ExpandTextView.java index 9ef5d7bab4..9b832bd8bf 100644 --- a/app/src/main/java/com/gh/common/view/ExpandTextView.java +++ b/app/src/main/java/com/gh/common/view/ExpandTextView.java @@ -14,6 +14,7 @@ import android.view.View; import com.gh.gamecenter.R; +import androidx.annotation.NonNull; import androidx.appcompat.widget.AppCompatTextView; import androidx.core.content.ContextCompat; @@ -122,27 +123,37 @@ public class ExpandTextView extends AppCompatTextView { content = content.toString().trim() + mExpandText; } } else { - CharSequence lastText = mSnapshotText.subSequence(lastLineStart, lastLineEnd); - for (int i = lastText.length() - 1; i > 0; i--) { - CharSequence sequence = lastText.subSequence(0, i); - float w = paint.measureText(sequence.toString()); - if (viewWidth - w > expandTextWidth) { - if (mUseGradientAlphaEndText) { - finalEndText = lastText.subSequence(i - additionalEndTextCount, i) + mEndText; + CharSequence lastLineText = mSnapshotText.subSequence(lastLineStart, lastLineEnd); + CharSequence subSequence; + float subSequenceWidth; + for (int i = lastLineText.length() - 1; i > 0; i--) { + if (mUseGradientAlphaEndText) { + subSequence = lastLineText.subSequence(0, i - additionalEndTextCount); + subSequenceWidth = paint.measureText(subSequence.toString()); + + finalEndText = lastLineText.subSequence(i - additionalEndTextCount, i) + mEndText; + expandTextWidth = paint.measureText(finalEndText + mExpandText); + + if (viewWidth - subSequenceWidth > expandTextWidth) { finalEndText = finalEndText.replace("\n", ""); - content = mSnapshotText.subSequence(start, lastLineStart + i - additionalEndTextCount) + finalEndText + mExpandText; - } else { - content = mSnapshotText.subSequence(start, lastLineStart + i) + mExpandText; + break; + } + } else { + subSequence = lastLineText.subSequence(0, i); + subSequenceWidth = paint.measureText(subSequence.toString()); + + if (viewWidth - subSequenceWidth > expandTextWidth) { + content = mSnapshotText.subSequence(start, lastLineStart + i) + mExpandText; + break; } - break; } } } SpannableStringBuilder msp = new SpannableStringBuilder(mSnapshotText); int length = msp.length(); - int startPosition = 0; + int startPosition; startPosition = content.length() - finalEndText.length() - mExpandText.length(); startPosition = Math.max(startPosition, 0); @@ -153,14 +164,14 @@ public class ExpandTextView extends AppCompatTextView { msp.setSpan(new ClickableSpan() { @Override - public void updateDrawState(TextPaint ds) { + public void updateDrawState(@NonNull TextPaint ds) { super.updateDrawState(ds); ds.setColor(ContextCompat.getColor(getContext(), R.color.theme_font)); ds.setUnderlineText(false); } @Override - public void onClick(View widget) { + public void onClick(@NonNull View widget) { mIsExpanded = true; setMaxLines(Integer.MAX_VALUE); setText(mSnapshotText);