gpt4 book ai didi

android - 如何创建类似 gmail 的收件人(用户)自定义 View

转载 作者:行者123 更新时间:2023-11-29 00:24:03 25 4
gpt4 key购买 nike

我的目标是创建在 Gmail 和 Foursquare 中使用的类似徽章的 View ,如下所示。

enter image description here

到目前为止,我已经创建了 ReplacementSpan 来处理单个 View 的前景色和背景色。

public class SearchTagSpan extends ReplacementSpan {

private int backgroundColor;
private int forgroundColor;

public SearchTagSpan() {
backgroundColor = -1;
forgroundColor = Color.BLACK;
}

public SearchTagSpan(int backgroundColor, int forgroundColor) {
this.backgroundColor = backgroundColor;
this.forgroundColor = forgroundColor;
}

@Override
public void draw(
Canvas canvas,
CharSequence text, int start, int end,
float x, int top, int y, int bottom,
Paint paint) {
RectF rect = new RectF(x, top, x + measureText(paint, text, start, end), bottom);
paint.setColor(backgroundColor);
canvas.drawRect(rect, paint);
paint.setColor(forgroundColor);
canvas.drawText(text, start, end, x, y, paint);
}

@Override
public int getSize(
Paint paint,
CharSequence text, int start, int end,
Paint.FontMetricsInt fm) {
return Math.round(paint.measureText(text, start, end));
}

private float measureText(Paint paint, CharSequence text, int start, int end) {
return paint.measureText(text, start, end);
}
}

背景色和前景色均已正确应用,但是当 View 变为多行时,每个徽章的背景都会拉伸(stretch)以填充 TextView 布局中指定的行间距。如果我删除行间距,那么第一行和第二行的背景会相互接触,如下图所示。

enter image description here

我的方向是否正确?我错过了什么吗?

最佳答案

关于android - 如何创建类似 gmail 的收件人(用户)自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21089475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com