修复游戏详情文字展开按钮换行时的错位问题

This commit is contained in:
juntao
2020-04-27 15:23:03 +08:00
parent dd60ed7abd
commit f120dfda15
5 changed files with 4 additions and 7 deletions

View File

@ -2,7 +2,6 @@ package com.gh.common.view;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.os.Build;
import android.text.Layout;
import android.text.SpannableStringBuilder;
@ -25,7 +24,6 @@ public class ExpandTextView extends AppCompatTextView {
private String mEndText = "...";
private String mExpandText = mEndText + "全文";
private boolean mUseGradientAlphaEndText = false;
private int mExpandTextBackgroundColor = Color.TRANSPARENT;
private int mMaxLines = 3; // 由于sdk版本限制(getMaxLines) 这里设置默认值
@ -47,7 +45,6 @@ public class ExpandTextView extends AppCompatTextView {
mUseGradientAlphaEndText = ta.getBoolean(R.styleable.ExpandTextView_useGradientAlphaEndText, false);
mEndText = ta.getString(R.styleable.ExpandTextView_endText) == null ? mEndText : ta.getString(R.styleable.ExpandTextView_endText);
mExpandText = ta.getString(R.styleable.ExpandTextView_expandText) == null ? mExpandText : ta.getString(R.styleable.ExpandTextView_expandText);
mExpandTextBackgroundColor = ta.getColor(R.styleable.ExpandTextView_expandTextBackgroundColor, mExpandTextBackgroundColor);
ta.recycle();
}
@ -102,6 +99,8 @@ public class ExpandTextView extends AppCompatTextView {
// TODO 可能最后一行只有一个字符,这里的 -ADDITIONAL_END_TEXT_COUNT 有隐藏问题
if (mUseGradientAlphaEndText) {
finalEndText = content.toString().substring(content.length() - additionalEndTextCount, content.length()) + mEndText;
finalEndText = finalEndText.replace("\n", " ");
content = content.subSequence(0, content.length() - additionalEndTextCount) + finalEndText + mExpandText;
} else {
content = content.toString().trim() + mExpandText;
@ -114,6 +113,8 @@ public class ExpandTextView extends AppCompatTextView {
if (viewWidth - w - DisplayUtils.dip2px(5) > expandTextWidth) {
if (mUseGradientAlphaEndText) {
finalEndText = lastText.subSequence(i - additionalEndTextCount, i) + mEndText;
finalEndText = finalEndText.replace("\n", " ");
content = mSnapshotText.subSequence(start, lastLineStart + i - additionalEndTextCount) + finalEndText + mExpandText;
} else {
content = mSnapshotText.subSequence(start, lastLineStart + i) + mExpandText;