精华内容
下载资源
问答
  • 2021-05-26 09:26:35

    试试这种方式

    创建这个功能

    public void makeTextViewResizable(final TextView tv, final int maxLine, final String expandText) {

    if (tv.getTag() == null) {

    tv.setTag(tv.getText());

    }

    ViewTreeObserver vto = tv.getViewTreeObserver();

    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

    @SuppressWarnings("deprecation")

    @Override

    public void onGlobalLayout() {

    ViewTreeObserver obs = tv.getViewTreeObserver();

    obs.removeGlobalOnLayoutListener(this);

    if (maxLine <= 0) {

    int lineEndIndex = tv.getLayout().getLineEnd(0);

    String text = tv.getText().subSequence(0, lineEndIndex - expandText.length() + 1) + " " + expandText;

    tv.setText(text);

    } else if (tv.getLineCount() >= maxLine) {

    int lineEndIndex = tv.getLayout().getLineEnd(maxLine - 1);

    String text = tv.getText().subSequence(0, lineEndIndex - expandText.length() + 1) + " " + expandText;

    tv.setText(text);

    }

    }

    });

    }

    如何使用

    这将在第4行末尾写入“SeeMore”而不是“……”

    makeTextViewResizable(tv, 4, "SeeMore");

    现在不需要在xml中写这些行

    android:ellipsize="end"

    android:maxLines="3"

    更多相关内容
  • label中省略号位置

    2016-03-03 10:09:09
    iOS4.0版本: ...以字符为显示单位显示,后面部分省略不显示。 label.lineBreakMode = NSLineBreakByClipping;剪切与文本宽度相同的内容长度,后半部分被删除。 label.lineBreakMode = NSLineBreakByTruncati

    iOS4.0版本:

    label.lineBreakMode = NSLineBreakByCharWrapping;以字符为显示单位显示,后面部分省略不显示。

    label.lineBreakMode = NSLineBreakByClipping;剪切与文本宽度相同的内容长度,后半部分被删除。
    label.lineBreakMode = NSLineBreakByTruncatingHead;前面部分文字以……方式省略,显示尾部文字内容。
    label.lineBreakMode = NSLineBreakByTruncatingMiddle;中间的内容以……方式省略,显示头尾的文字内容。
    label.lineBreakMode = NSLineBreakByTruncatingTail;结尾部分的内容以……方式省略,显示头的文字内容。
    label.lineBreakMode = NSLineBreakByWordWrapping;以单词为显示单位显示,后面部分省略不显示。
     
     
    iOS6.0版本:
     
         //设置lable中文字过长时的显示格式 
         label.lineBreakMode = UILineBreakModeMiddleTruncation;  //截去中间 
    //    typedef enum{ 
    //        UILineBreakModeWordWrap = 0, 
    //        UILineBreakModeCharacterWrap, 
    //        UILineBreakModeClip,//截去多余部分 
    //        UILineBreakModeHeadTruncation,//截取头部 
    //        UILineBreakModeTailTruncation,//截去尾部 
    //        UILineBreakModeMiddleTruncation,//截去中间 
    //    }

    iOS6.0之后的版本:

    typedef NS_ENUM(NSInteger, NSLineBreakMode) {

        NSLineBreakByWordWrapping = 0,     // Wrap at word boundaries, default

        NSLineBreakByCharWrapping, // Wrap at character boundaries

        NSLineBreakByClipping, // Simply clip

        NSLineBreakByTruncatingHead, // Truncate at head of line: "...wxyz"

        NSLineBreakByTruncatingTail, // Truncate at tail of line: "abcd..."

        NSLineBreakByTruncatingMiddle // Truncate middle of line:  "ab...yz"

    } NS_ENUM_AVAILABLE(10_0, 6_0);


    展开全文
  • //默认单行 //sp2px(getContext(), textsize) 单个中文的宽度,sp转换成px适应不同手机 int textWidth = sp2px(getContext(), textsize)*(getChineseNums(text)+(getNoChineseNums(text)+1)/2); if (textWidth>width...

    用法:

    public void setTextMy(String text,float textsize,int width)只需要设置text,字体大小和TextView显示的宽度

    源码:

    import android.content.Context;

    import android.util.AttributeSet;

    import android.widget.TextView;

    public class MyTextView extends TextView {

    public MyTextView(Context context, AttributeSet attrs) {

    super(context, attrs);

    // TODO Auto-generated constructor stub

    }

    public MyTextView(Context context) {

    super(context);

    // TODO Auto-generated constructor stub

    }

    /**setText

    * @param text 显示的字符串

    * @param textsize 字体大小

    * @param width TextView的宽度

    */

    public void setTextMy(String text,float textsize,int width){

    setSingleLine();//默认单行

    //sp2px(getContext(), textsize) 单个中文的宽度,sp转换成px适应不同手机

    int textWidth = sp2px(getContext(), textsize)*(getChineseNums(text)+(getNoChineseNums(text)+1)/2);

    if (textWidth>width) {

    int n = width/BaseUtils.sp2px(getContext(), textsize);

    if(n-1

    setText(text.substring(0, n-1)+"...");

    }else{

    setText(text);

    }

    }else{

    setText(text);

    }

    }

    /**字符串中,中文的字数

    * @param str

    * @return

    */

    private int getChineseNums(String str) {

    int byteLength = str.getBytes().length;

    int strLength = str.length();

    return (byteLength - strLength) / 2;

    }

    /**字符串中,非中文的字数

    * @param str

    * @return

    */

    private int getNoChineseNums(String str) {

    int byteLength = str.getBytes().length;

    int strLength = str.length();

    return strLength - (byteLength - strLength) / 2;

    }

    /**

    * 将sp值转换为px值,保证文字大小不变

    *

    * @param spValue

    * @param fontScale

    * (DisplayMetrics类中属性scaledDensity)

    * @return

    */

    public static int sp2px(Context context, float spValue) {

    final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;

    return (int) (spValue * fontScale + 0.5f);

    }

    }

    展开全文
  • TextView 设置显示省略号

    千次阅读 2016-07-29 14:29:46
    限制TextView显示的字符数,多出的部分显示省略号。 效果图如下: 自定义EllipsizingTextView.java,(com.example.user.helloworld.EllipsizingTextView)内容如下: public class EllipsizingTextView extends...

    限制TextView显示的字符数,多出的部分显示省略号。

    效果图如下:



    自定义EllipsizingTextView.java,(com.example.user.helloworld.EllipsizingTextView)内容如下:

    public class EllipsizingTextView extends TextView {
        private static final String ELLIPSIS = "...";
    
        private boolean isStale;
        private boolean programmaticChange;
        private String fullText;
        private int maxLength = -1;
    
        public EllipsizingTextView(Context context) {
            super(context);
        }
    
        public EllipsizingTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public EllipsizingTextView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
        }
    
        /**
         * 外部通过调用setMaxLength方法设置显示的最多字数为maxLength
         * @param maxLength
         */
        public void setMaxLength(int maxLength) {
            this.maxLength = maxLength;
        }
    
        public int getMaxLength(){
            return maxLength;
        }
    
        @Override
        protected void onTextChanged(CharSequence text, int start, int before, int after) {
            super.onTextChanged(text, start, before, after);
            if (!programmaticChange) {
                fullText = text.toString();
                isStale = true;
            }
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            if (isStale) {
                super.setEllipsize(null);
                resetText();
            }
            super.onDraw(canvas);
        }
    
        private void resetText() {
            int len = fullText.length();
            String workingText = fullText;
            if (maxLength != -1) {
                if (len > maxLength) {
                    workingText = fullText.substring(0, maxLength).trim();
                    workingText = workingText + ELLIPSIS;
                }
            }
            if (!workingText.equals(getText())) {
                programmaticChange = true;
                try {
                    setText(workingText);
                } finally {
                    programmaticChange = false;
                }
            }
            isStale = false;
        }
    
    }
    


    如何使用呢?

    1. Activity布局文件actiivty_main.xml中使用此自定义TextView,如下:

    <com.example.user.helloworld.EllipsizingTextView
        android:id="@+id/tv_content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。"
        android:maxLines="10"/>


    2. 在Activity代码中获取EllipsizingTextView对象,首先定义EllipsizingTextView对象。

    private EllipsizingTextView tv_content;
    3.在onCreate(Bundle savedInstanceState)方法中获取tv_content对象,如下:
    tv_content = (EllipsizingTextView) findViewById(R.id.tv_content);
    4.设置最多显示字符数(设置最多显示120字符,超出部分使用省略号显示),如下:
    tv_content.setMaxLength(120);
    通过这种方式,适用于当行和多行的情况。

    如果单行文本显示不完整末尾显示省略号,就简单多了。
    只需要在activity的布局文件,TextView节点添加属性:android:singleLine="true"和android:ellipsize="end"即可,如下:
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        <strong>android:singleLine="true"</strong>
        android:text="Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。"
        <strong>android:ellipsize="end"</strong>/>
     
    
    如果限制显示指定的行数,超出指定的行数显示省略号。已经有人自定义了
    EllipsizingTextView类。
    原文地址:http://code.taobao.org/p/android_jiudu/src/trunk/Forlind/src/com/wine/jiubang/ui/view/EllipsizingTextView.java 点击打开链接
    代码如下:

    package com.example.user.helloworld;
    
    import android.content.Context;
    import android.content.res.TypedArray;
    import android.graphics.Canvas;
    import android.text.Layout;
    import android.text.StaticLayout;
    import android.text.TextUtils;
    import android.util.AttributeSet;
    import android.widget.TextView;
    
    import java.util.ArrayList;
    import java.util.List;
    
        public class EllipsizingTextView extends TextView {
    
            private static final String ELLIPSIS = "...";
    
            public interface EllipsizeListener {
                void ellipsizeStateChanged(boolean ellipsized);
            }
    
            private final List<EllipsizeListener> ellipsizeListeners = new ArrayList<EllipsizeListener>();
    
            private boolean isEllipsized;
            private boolean isStale;
            private boolean programmaticChange;
            private String fullText;
            private int mMaxLines = -1;
            private float lineSpacingMultiplier = 1.0f;
            private float lineAdditionalVerticalPadding = 0.0f;
    
            public EllipsizingTextView(Context context) {
                super(context);
            }
    
            public EllipsizingTextView(Context context, AttributeSet attrs) {
                super(context, attrs);
                // 开始没加这两行的时候,一直不对,maxlinex在textChange里面会被改变为-1
                TypedArray a = context.obtainStyledAttributes(attrs, new int[] { android.R.attr.maxLines });
                setMaxLines(a.getInt(0, 2));
                a.recycle();
            }
    
            public EllipsizingTextView(Context context, AttributeSet attrs, int defStyle) {
                super(context, attrs, defStyle);
                // 开始没加这两行的时候,一直不对,maxlinex在textChange里面会被改变为-1
                TypedArray a = context.obtainStyledAttributes(attrs, new int[] { android.R.attr.maxLines });
                setMaxLines(a.getInt(0, 2));
                a.recycle();
            }
    
            public void addEllipsizeListener(EllipsizeListener listener) {
                if (listener == null) {
                    throw new NullPointerException();
                }
                ellipsizeListeners.add(listener);
            }
    
            public void removeEllipsizeListener(EllipsizeListener listener) {
                ellipsizeListeners.remove(listener);
            }
    
            public boolean isEllipsized() {
                return isEllipsized;
            }
    
            @Override
            public void setMaxLines(int maxLines) {
                super.setMaxLines(maxLines);
                this.mMaxLines = maxLines;
                isStale = true;
            }
    
            public int getMaxLine() {
                return mMaxLines;
            }
    
            public int getTextLines(){
                return createWorkingLayout(fullText).getLineCount();
            }
            @Override
            public void setLineSpacing(float add, float mult) {
                this.lineAdditionalVerticalPadding = add;
                this.lineSpacingMultiplier = mult;
                super.setLineSpacing(add, mult);
            }
    
            @Override
            protected void onTextChanged(CharSequence text, int start, int before, int after) {
                super.onTextChanged(text, start, before, after);
                if (!programmaticChange) {
                    fullText = text.toString();
                    isStale = true;
                }
            }
    
            @Override
            protected void onDraw(Canvas canvas) {
                if (isStale) {
                    super.setEllipsize(null);
                    resetText();
                }
                super.onDraw(canvas);
            }
    
            private void resetText() {
                int maxLines = getMaxLine();
                String workingText = fullText;
                boolean ellipsized = false;
                if (maxLines != -1) {
                    Layout layout = createWorkingLayout(workingText);
                    if (layout.getLineCount() > maxLines) {
    
                        workingText = fullText.substring(0, layout.getLineEnd(maxLines - 1)).trim();
                        Layout layout2 = createWorkingLayout(workingText + ELLIPSIS);
                        while (layout2.getLineCount() > maxLines) {
                            workingText = workingText.substring(0, workingText.length() - 1 - 1);
                            layout2 = createWorkingLayout(workingText + ELLIPSIS);
                        }
                        workingText = workingText + ELLIPSIS;
                        ellipsized = true;
                    }
                }
                if (!workingText.equals(getText())) {
                    programmaticChange = true;
                    try {
                        setText(workingText);
                    } finally {
                        programmaticChange = false;
                    }
                }
                isStale = false;
                if (ellipsized != isEllipsized) {
                    isEllipsized = ellipsized;
                    for (EllipsizeListener listener : ellipsizeListeners) {
                        listener.ellipsizeStateChanged(ellipsized);
                    }
                }
            }
    
            private Layout createWorkingLayout(String workingText) {
                return new StaticLayout(workingText, getPaint(), getWidth() - getPaddingLeft()
                        - getPaddingRight(), Layout.Alignment.ALIGN_NORMAL, lineSpacingMultiplier,
                        lineAdditionalVerticalPadding, false);
            }
    
            @Override
            public void setEllipsize(TextUtils.TruncateAt where) {
                // Ellipsize settings are not respected } }
            }
        }
    

    使用方法:

    1 Activity类的布局文件activity_main.xml使用此自定义View,如下:

    <com.example.user.helloworld.EllipsizingTextView
            android:id="@+id/etv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。"/>
    2 Activity类查找该组件
    private EllipsizingTextView tv_content = (EllipsizingTextView)findViewById(R.id.etv);
    tv_content.setMaxLines(5);

    最终实现的效果是:少于5行内容全部显示,超出5行内容不显示,且第5行末尾显示省略号。











    展开全文
  • 可以使用css样式来解决,如果没有显示省略号,看看是否是行内元素,加上 display: block!important;即可。 display: block!important; width:60px; text-overflow:ellipsis; -o-text-overflow:ellipsis; -...
  • 这里写自定义目录标题单行省略号多行省略号 单行省略号 直接上代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> &...
  • 1、把电脑输入法调整为中文状态 2、按住键盘上SHIFT键的同时按住键盘横排数字键上的6,就能直接打出省略号了:……是不是很简单呢 很多刚刚接触电脑的人,不知道怎么打省略号。那么电脑怎么打出省略号呢?下面就让...
  • table文字溢出显示省略号问题 今天遇到一个css样式问题: 如题,在table里面,th 的文字如果太长的话,想要显示省略号会使用下面三行代码: overflow: hidden;text-overflow: ellipsis;white-space: nowrap; 使用这...
  • 文章目录边框列表背景文本显示省略号 边框 边框相关属性 border-width 边框宽度 属性值:length(数值+单位)例如 width:10px border-style 边框样式 属性值: 常用 :solid 实线 dashed 虚线 double 双线 dotted ...
  • 1.实现文字强制不换行 div{ white-space:nowrap } 2.一行文本不换行显示省略号 div{ width:200px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
  • php 截图中文字符串带省略号

    千次阅读 2017-09-05 16:36:41
    * 字符串截取,支持中文和其他编码 * @static * @access public * @param string $str 需要转换的字符串 * @param string $start 开始位置 * @param string $length 截取长度 * @param string $charset 编码...
  • CSS 如何实现文字溢出隐藏时,隐藏左边或者右边,并显示省略号 指定一个定宽高的盒子,当文字溢出,会换行显示出来。 .box { width: 60px; height: 30px; background-color: #ff000020; } 当限制文字不换行后,...
  • 溢出的文字省略号显示 单行文本溢出显示省略号 单行文本溢出显示省略号--必须满足三个条件: /*1. 先强制一行内显示文本*/ white-space: nowrap; ( 默认 normal 自动换行) /*2. 超出的部分隐藏*/ ...
  • 这个时候, 为了用户友好, 可以将展示不下的部分使用省略号代替。 我这里的例子是在app的顶部展示一段 "welcome back, XXX"的文字。 因为在顶部, 我们需要固定高度, 且最多只能展示两行字。 可以看到, 下图中...
  • 一.使用场景 最近在仿写——起点中文网的微信小程序,在...上述样式实现省略号后,剩下最后一个,展开按钮需要出现在省略号后面 如果是在标签后面添加“展开按钮”,此方式行不通,无论怎样添加,省略号都会将后面的内容
  • CSS中单行文本溢出显示省略号的方法你知道吗?在web前端技术学习中,这个问题其实是属于老生常谈了,因为css单行文本的应用是非常频繁的,比如网站最基本的文章列表,标题会很长,而显示列表的区域宽度却没有这么宽,...
  • 汉语中的省略号是六个点,而且位置是居中的(……)。英语省略号是三个点,而且位置是居下的(…)。汉语的省略号要用中文字体,比如宋体、黑体,不能用西文字体,比如Times New Roman。英语的省略号要用西文字体,...
  • 最近在工作遇到这样一个问题,在绘制饼图时,由于label文字过长,而超出...但是,这是canvas所以不能设div标签,再者,label的位置的不确定的,所以宽度也是不确定的。 再加上我们公司的需求比较奇葩,我们要做的是l...
  • js 原理是:计算字节的方法,1个英文一个位置一个中文占两个位置,给一个总位置,处理获取的字符串再控制显示 function ellipsis(totalWords,ele) {  var count = 0,  text = $(ele).html(),//考虑换行导致...
  • React+TS文本溢出隐藏并显示省略号,移入Tooltip显示全部内容。当div文字内容过多时显示省略号,并且鼠标移入文字区域tooltip显示全部内容;div文字内容没有溢出时鼠标移入不作tooltip。并且随着窗口变化而变化,...
  • web前端总结之文本超出显示省略号

    千次阅读 2016-12-03 21:37:50
    当网页中显示文字过多时,会出现如下样式的文字: 文字显示为省略号,当鼠标移上去时显示文字。 这就是文本超出显示省略号
  • 逐行绘制文字,超出显示省略号,这个在小程序需求中还是比较常见的,刚好也遇到了,网上试了很多方法,都不行,然后请教公司的大佬,然后封装了一个方法 //直接this点调用方法 //x , y 绘制的坐标 //maxWigth 绘制...
  • } chart2.on('mouseover', function (params) { // console.log(params) //注意这里,我是以X轴显示内容过长为例,如果是y轴的话,需要改为yAxis if (params.componentType == "xAxis") { //设置悬浮文本的位置以及...
  • *+---------------------------------------------------------- * 字符串截取,支持中文和其他编码 *+---------------------------------------------------------- * @static * @access public ...
  • 1、TextView的属性maxLength和maxEms学习; 2、为什么有时候设置maxEms没效果 3、TextView省略号的显示
  • 在实际应用中,有的单元格可能内容较多,如何能做到内容超出一定长度显示省略号(...),当鼠标移动到单元格的时候,显示全部内容呢? 2. 解决方案 2.1 方法一(直接用 FineReport 公式实现) 1)在A2...
  • 在label样式上直接写上 style="width:30px;height:20px;...溢出文本显示省略号,text-overflow:ellipsis 这个标题其实已经是一个老生常谈的问题了。很多时候,比如网站最基本的文章列表,标题会很...
  • 实现单行、多行文本溢出显示省略号… ** 前提: 在项目过程成中, 经常会遇到文本溢出以省略号… 代替的情况出现, 我总结了四个方法。 1:单行文本的溢出显示省略号 overflow: hidden; text-overflow:ellipsis; ...
  • 由于JavaScript是unicode编码的,所有的字符对于它来说一个就是一个,但是后台程序不是,通常在后台程序中一个中文是占两个字节的,这就导致了前后端校验长度不一致,这个问题可以通过正则来解决。 有时候为了美观,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,778
精华内容 15,911
关键字:

中文省略号的位置