Android - ellipsize =“end”不显示三个点

xmlAndroid

1个回答

写回答

tony林

2025-06-16 15:05

+ 关注

Android
Android

使用Android开发时,我们经常会遇到需要截断文本并在末尾显示省略号的情况。Android提供了一个属性叫做ellipsize,可以通过设置其值为"end"来实现这个效果。然而,有时候我们可能不想显示这个默认的三个点,而是想展示其他符号。本文将介绍如何在Android中实现不显示三个点的ellipsize效果。

案例代码:

在布局文件中,我们可以使用TextView来展示文本,并通过设置ellipsize属性来控制截断和省略号的显示方式。以下是一个简单的示例:

XML

<TextView</p> Android:id="@+id/textView"

Android:layout_width="wrap_content"

Android:layout_height="wrap_content"

Android:maxLines="1"

Android:ellipsize="end"

Android:text="这是一个很长很长很长很长的文本,希望能够截断并显示省略号。"

/>

Java代码中,我们可以通过设置TextView的ellipsize属性来改变省略号的样式。以下是一个示例:

Java

TextView textView = findViewById(R.id.textView);

textView.setEllipsize(TextUtils.TruncateAt.END);

textView.setText("这是一个很长很长很长很长的文本,希望能够截断并显示省略号。");

通过上述代码,我们可以将一个很长的文本截断并在末尾显示省略号。默认情况下,Android会显示三个点作为省略号。但是,有时候我们可能不想显示这个默认的三个点,而是想展示其他符号。

实现不显示三个点

为了实现不显示默认的三个点,我们需要自定义一个Drawable来代替默认的省略号。以下是一个示例:

Java

public class CustomEllipsisDrawable extends Drawable {

private static final String ELLIPSIS = "...";

private PAInt pAInt;

private RectF rectF;

public CustomEllipsisDrawable() {

pAInt = new PAInt();

pAInt.setAntiAlias(true);

pAInt.setcolor(Color.BLACK);

pAInt.setTextSize(24);

rectF = new RectF();

}

@Override

public void draw(Canvas canvas) {

rectF.set(getBounds());

canvas.drawText(ELLIPSIS, rectF.left, rectF.bottom, pAInt);

}

@Override

public void setAlpha(int alpha) {

pAInt.setAlpha(alpha);

}

@Override

public void setcolorFilter(ColorFilter colorFilter) {

pAInt.setcolorFilter(colorFilter);

}

@Override

public int getOpacity() {

return PixelFormat.TRANSLUCENT;

}

}

以上代码定义了一个CustomEllipsisDrawable类,继承自Drawable。在draw()方法中,我们通过调用Canvas的drawText()方法来绘制自定义的省略号。在这个示例中,我们使用黑色的颜色和大小为24的字体来绘制省略号。

接下来,我们需要将这个自定义的Drawable设置给TextView的pAInt对象。以下是一个示例:

Java

TextView textView = findViewById(R.id.textView);

CustomEllipsisDrawable ellipsisDrawable = new CustomEllipsisDrawable();

textView.getPAInt().setShader(new BitmapShader(ellipsisDrawable, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT));

textView.setText("这是一个很长很长很长很长的文本,希望能够截断并显示省略号。");

通过上述代码,我们将自定义的省略号绘制到了TextView上,实现了不显示默认三个点的效果。

通过设置TextView的ellipsize属性为"end",我们可以实现在Android中截断文本并显示省略号的效果。然而,默认情况下,Android会显示三个点作为省略号。如果我们想要自定义省略号的样式,可以通过自定义Drawable并将其设置给TextView的pAInt对象来实现。这样,我们就能够在Android应用中实现不显示三个点的ellipsize效果了。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号