TextView中使用ImageSpan显示“...”问题
2017-01-09 17:53
561 查看
Android原生的TextView在单纯的文字显示时,设置setMaxLines()后,Ellipsized属性是正常的。但当出现图文并排情况时,就不太好使了,所以进行了一些调研后,自定义了EllipsizedTextView来适配图文混排时“…”的显示。
/** * 超过一定行数显示固定行数时末尾添加 "..."的TextView(适配图文混排) */ public class EllipsizedTextView extends TextView { private int mMaxLines; public EllipsizedTextView(Context context) { this(context, null); } public EllipsizedTextView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public EllipsizedTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); final TypedArray a = context.obtainStyledAttributes(attrs, new int[]{ android.R.attr.maxLines }, defStyle, 0); mMaxLines = a.getInteger(0, 1); a.recycle(); } @Override public void setText(CharSequence text, BufferType type) { if ((text!=null&&text.length()>0)&&(mMaxLines != Integer.MAX_VALUE && mMaxLines > 1) && getWidth() != 0) { StaticLayout layout = new StaticLayout(text, getPaint(), getWidth(), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); //需要显示的文字加上"..."的总宽度 float textAndEllipsizeWidth = 0; for (int i = 0; i < mMaxLines; i++) { //此处用getWidth()计算的话会有误差,所以用getLineWidth() textAndEllipsizeWidth += layout.getLineWidth(i); } text = TextUtils.ellipsize(text, getPaint(), textAndEllipsizeWidth, TextUtils.TruncateAt.END); } super.setText(text, type); } @Override protected void onSizeChanged(int width, int height, int oldWidth, int oldHeight) { super.onSizeChanged(width, height, oldWidth, oldHeight); if (width > 0 && oldWidth != width) { setText(getText()); } } @Override public int getMaxLines() { return mMaxLines; } @Override public void setMaxLines(int maxLines) { super.setMaxLines(maxLines); mMaxLines = maxLines; } }
相关文章推荐
- android-----使用ImageSpan对象在TextView组件中显示图像
- Widget中使用ImageView显示图片的问题
- Glide使用CircleImageView,显示图片出错的问题
- 使用Zeplin 过程中 TextView不显示的问题?
- 使用KeyboardView导致EditText光标不显示的问题
- Widget中使用ImageView显示图片的问题
- Xcode 8上 storyboard xib 使用imageView不显示问题
- Android textView文字添加图片 imageSpan使用
- Andrnoid 使用Glide时ImageView不显示的问题
- 使用TextView显示ImageView效果
- Android在打开一个新的Activity浏览大图时使用ImageView/PhotoView的时候图片显示在屏幕上部的问题
- 使用WebView.load(data,"text/html", "utf-8")加载显示乱码问题分析
- 带行间距的TextView,让文字和ImageSpan中的图片居中显示
- Android 使用pl.droidsonroids.gif.GifImageView在安卓中显示动图遇到的问题
- android textview显示GIF解决花屏问题,使用Glide4.0+,别犹豫,全网只有我这有写
- Android TextView imageSpan 居中问题
- Android开发第三方库glide和圆形控件circleimageview一起使用第一次进入无法显示问题
- android平台TextView使用ImageSpan展示GIF图片
- 使用pl.droidsonroids.gif.GifImageView在安卓中显示动图遇到的问题
- Android ImageSpan与TextView中的text居中对齐问题解决(无论TextView设置行距与否)