日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TextView 设置显示省略号

發(fā)布時(shí)間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TextView 设置显示省略号 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

限制TextView顯示的字符數(shù),多出的部分顯示省略號(hào)。

效果圖如下:



自定義EllipsizingTextView.java,(com.example.user.helloworld.EllipsizingTextView)內(nèi)容如下:

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);}/*** 外部通過調(diào)用setMaxLength方法設(shè)置顯示的最多字?jǐn)?shù)為maxLength* @param maxLength*/public void setMaxLength(int maxLength) {this.maxLength = maxLength;}public int getMaxLength(){return maxLength;}@Overrideprotected void onTextChanged(CharSequence text, int start, int before, int after) {super.onTextChanged(text, start, before, after);if (!programmaticChange) {fullText = text.toString();isStale = true;}}@Overrideprotected 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.EllipsizingTextViewandroid:id="@+id/tv_content"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由Andy Rubin開發(fā),主要支持手機(jī)。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營運(yùn)商組建開放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機(jī)發(fā)布于2008年10月。"android:maxLines="10"/>


2. 在Activity代碼中獲取EllipsizingTextView對(duì)象,首先定義EllipsizingTextView對(duì)象。

private EllipsizingTextView tv_content;3.在onCreate(Bundle savedInstanceState)方法中獲取tv_content對(duì)象,如下: tv_content = (EllipsizingTextView) findViewById(R.id.tv_content);4.設(shè)置最多顯示字符數(shù)(設(shè)置最多顯示120字符,超出部分使用省略號(hào)顯示),如下: tv_content.setMaxLength(120);通過這種方式,適用于當(dāng)行和多行的情況。
如果單行文本顯示不完整末尾顯示省略號(hào),就簡單多了。 只需要在activity的布局文件,TextView節(jié)點(diǎn)添加屬性:android:singleLine="true"和android:ellipsize="end"即可,如下: <TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"<strong>android:singleLine="true"</strong>android:text="Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。"<strong>android:ellipsize="end"</strong>/> 如果限制顯示指定的行數(shù),超出指定的行數(shù)顯示省略號(hào)。已經(jīng)有人自定義了EllipsizingTextView類。 原文地址:http://code.taobao.org/p/android_jiudu/src/trunk/Forlind/src/com/wine/jiubang/ui/view/EllipsizingTextView.java 點(diǎn)擊打開鏈接代碼如下:

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);// 開始沒加這兩行的時(shí)候,一直不對(duì),maxlinex在textChange里面會(huì)被改變?yōu)?1TypedArray 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);// 開始沒加這兩行的時(shí)候,一直不對(duì),maxlinex在textChange里面會(huì)被改變?yōu)?1TypedArray 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;}@Overridepublic void setMaxLines(int maxLines) {super.setMaxLines(maxLines);this.mMaxLines = maxLines;isStale = true;}public int getMaxLine() {return mMaxLines;}public int getTextLines(){return createWorkingLayout(fullText).getLineCount();}@Overridepublic void setLineSpacing(float add, float mult) {this.lineAdditionalVerticalPadding = add;this.lineSpacingMultiplier = mult;super.setLineSpacing(add, mult);}@Overrideprotected void onTextChanged(CharSequence text, int start, int before, int after) {super.onTextChanged(text, start, before, after);if (!programmaticChange) {fullText = text.toString();isStale = true;}}@Overrideprotected 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);}@Overridepublic void setEllipsize(TextUtils.TruncateAt where) {// Ellipsize settings are not respected } }}}

使用方法:

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

<com.example.user.helloworld.EllipsizingTextViewandroid:id="@+id/etv"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由Andy Rubin開發(fā),主要支持手機(jī)。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營運(yùn)商組建開放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機(jī)發(fā)布于2008年10月。"/>2 Activity類查找該組件 private EllipsizingTextView tv_content = (EllipsizingTextView)findViewById(R.id.etv); tv_content.setMaxLines(5);
最終實(shí)現(xiàn)的效果是:少于5行內(nèi)容全部顯示,超出5行內(nèi)容不顯示,且第5行末尾顯示省略號(hào)。











總結(jié)

以上是生活随笔為你收集整理的TextView 设置显示省略号的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av在线播放观看 | 在线观看免费视频国产 | 9i在线看片成人免费 | 国产精品又黄又爽又色无遮挡 | 欧美a一级片 | 一区二区三区美女视频 | 伊人国产视频 | 三级色网| 日日干天天射 | 日本成人三级电影 | 中文字幕日韩av | 欧美zzz物交 | 午夜爱爱网 | 日韩av片在线 | 操小妞| 北条麻妃在线一区二区 | 亚洲精品91天天久久人人 | 日韩3p | 欧美做受视频 | 男人的天堂久久久 | 中文亚洲欧美 | 人妻91麻豆一区二区三区 | 久久精品亚洲一区二区 | 少妇毛片一区二区三区粉嫩av | 女同性αv亚洲女同志 | av影片在线观看 | 99性趣网| 性高潮久久久久久久久久 | 成人黄色短片 | 日本视频一区二区三区 | 黄色在线免费看 | 国产伦精品一区二区三区照片 | 久久国产精品波多野结衣av | 欧美日韩不卡一区 | 蜜臂av | www黄色 | 97福利网| 91亚洲视频在线 | 久久久久久久人妻无码中文字幕爆 | 古装做爰无遮挡三级聊斋艳谭 | 欧美性俱乐部 | 国内精品卡一卡二卡三 | 午夜天堂精品久久久久 | 天天黄色片 | 网友自拍第一页 | 蜜臀av在线免费观看 | 免费黄片毛片 | 91淫黄大片 | 91porny九色91啦中文 | 91久久免费 | 五月婷婷色丁香 | 91拔萝卜视频 | 亚洲成人精品在线播放 | 在线观看视频一区 | 麻豆精品视频 | 禁漫天堂黄漫画无遮挡观看 | 国产精品综合久久久 | 麻豆av在线免费观看 | 日本3级网站 | 成年人黄色在线观看 | 国产精品美女久久久久 | 午夜看片在线观看 | 久久国产精品区 | avtt男人天堂 | 久久久香蕉视频 | 在线你懂得| 国产精品久久久久久福利 | 日日夜夜天天干 | 国产综合精品在线 | 在线播放视频高清在线观看 | 爱情岛论坛永久入址在线 | 一区二区三区不卡在线观看 | 免费看黄色片视频 | 亚洲国产影视 | 国产精品伦子伦免费视频 | 久久久精品日韩 | 国语对白精彩对话 | 久久精品视频99 | 视频一区二区三区在线观看 | 风韵丰满熟妇啪啪区老熟熟女 | 国内精品久久久久久久久 | 一本大道视频 | 少妇精品导航 | 免费看国产曰批40分钟粉红裤头 | 精品国产乱码久久久久久预案 | 蜜桃视频在线网站 | 69欧美视频 | 三级在线网址 | www.亚洲.com| 啪啪网站免费 | 一级黄在线观看 | 国产精品69久久久久 | 在线中文字幕亚洲 | 日日摸夜夜添狠狠添欧美 | 大尺度做爰呻吟舌吻情头 | 国产剧情在线一区 | 九一国产在线 | 欧美日韩一级大片 | 午夜影院一区 |