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);