maxLines android:ellipsize="end" Spannable 互相之间存在冲突
2016-12-01 17:10
507 查看
解决方式如下:
附上更多大神讨论链接:
http://stackoverflow.com/questions/14691511/textview-using-spannable-ellipsize-doesnt-work
package com.yunspeak.travel.ui.view; import android.content.Context; import android.content.res.TypedArray; import android.text.DynamicLayout; import android.text.StaticLayout; import android.util.AttributeSet; import android.widget.TextView; import com.yunspeak.travel.R; import java.lang.reflect.Field; /** * Created by wangyang on 2016/12/1 0001. */ public class EllipsizeTextView extends TextView { private int limitLines=1; public EllipsizeTextView(Context context) { this(context,null); } public EllipsizeTextView(Context context, AttributeSet attrs) { this(context, attrs,0); } public EllipsizeTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context,attrs,defStyleAttr); } private void init(Context context, AttributeSet attrs, int defStyleAttr) { TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.EllipsizeTextView, defStyleAttr, 0); int indexCount = typedArray.getIndexCount();//获取自定义属性个数 for (int i = 0; i < indexCount; i++) { int index = typedArray.getIndex(i); switch (index) { case R.styleable.EllipsizeTextView_m_limit_lines: limitLines = typedArray.getInt(index,1); break; } } typedArray.recycle(); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { StaticLayout layout = null; Field field = null; try { Field staticField = DynamicLayout.class.getDeclaredField("sStaticLayout"); staticField.setAccessible(true); layout = (StaticLayout) staticField.get(DynamicLayout.class); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } if (layout != null) { try { field = StaticLayout.class.getDeclaredField("mMaximumVisibleLineCount"); field.setAccessible(true); field.setInt(layout, limitLines); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } super.onMeasure(widthMeasureSpec, heightMeasureSpec); if (layout != null && field != null) { try { field.setInt(layout, Integer.MAX_VALUE); } catch (IllegalAccessException e) { e.printStackTrace(); } } } }
附上更多大神讨论链接:
http://stackoverflow.com/questions/14691511/textview-using-spannable-ellipsize-doesnt-work
相关文章推荐
- android 决TextView中MaxLines与ellipsize=end冲突问题
- 解决android:ellipsize="end" 异常
- 解决TextView中MaxLines与ellipsize=end冲突问题
- 解决TextView中MaxLines与ellipsize=end冲突问题
- android TextView多行文本(超过3行)使用ellipsize="end"属性无效问题的解决方法
- android:ellipsize="end" + android:maxLines="" 失败的原因与解决方案
- android:maxLines与android:ellipsize冲突
- android:maxLines="2" android:ellipsize="end"
- android TextView 显示不全的问题解决,此问题是设置了maxLines和ellipsize=end情况下发生的!
- Textview用android:ellipsize="end"末尾出现方框乱码的解决办法
- singleLine=”true” 和 maxLines=”1″的区别 android:ellipsize="end"无效
- 实习入职第十六天:android:ellipsize="end"
- 解决TextView中MaxLines与ellipsize=end冲突问题
- Android判断是否触发ellipsize="end"(即textview是否换行)
- android:ellipsize="end" 失效或者 相关的Bug
- textview中有很多行,我只让它显示三行,最后显示...,我设置了android:maxLines="3"和android:ellipsize="end",但出现的问题是只显示两行就显示“...”
- 解决TextView中MaxLines与ellipsize=end冲突问题
- Android判断是否触发ellipsize="end"(即textview是否换行)
- android:maxLines和android:ellipsize同时使用导致显示异常
- 对于TextView 设置 Ellipsize ="End" 无效时的解决方法