解决方式如下:

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

更多相关文章

  1. android GPS定位和卫星个数
  2. 让android studio 支持Lambda
  3. Android读取Excel文件
  4. 无法找到“android:Theme.Holo.Light.DarkActionBar“的问题
  5. Android屏幕解锁图案破解
  6. 安装android SDK和导入项目容易遇到的ERROR
  7. 在Android(安卓)sdk 更新到5.0碰到的问题以及解决方案
  8. Android:giraffeplayer2 ConnectException:Failed to connect to
  9. Internal error. Please refer to https://code.google.com/p/an

随机推荐

  1. android-xml布局属性 - 随心
  2. android之四大组件之一-Activity(三)
  3. Android模拟器及编译环境安装新手入门-3
  4. Jni/C for android 技术总揽
  5. 英特尔® Android* USB 驱动程序安装说明
  6. android studio创建模拟器报错解决 emula
  7. 【Android】高效ListView
  8. linux学习笔记《一.烧写篇_android》
  9. Android各种资源详解
  10. repo使用