我的目标是创建Gmail和Foursquare中使用的类似徽章的视图,如下所示。
到目前为止,我创建了ReplacementSpan
来处理单个视图的前景色和背景色。
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);
}
}
正确应用背景和前景色但是当视图变为多行时,每个徽章的背景会拉伸以填充TextView
布局中指定的行间距。如果我删除行间距,则第一行和第二行的背景将相互接触,如下图所示。
我在这里朝着正确的方向前进吗?有没有我错过的东西?
答案 0 :(得分:3)
看看这些
https://plus.google.com/+RomanNurik/posts/WUd7GrfZfiZ 和 https://github.com/splitwise/TokenAutoComplete 和 https://github.com/kpbird/chips-edittext-library
答案 1 :(得分:-1)
为此你需要ActionBar。 这支持高于+3.0
如果你在较低版本的android中需要相同的话,那么你可以使用appCompat支持库来支持较低版本的android。
请参考.. http://developer.android.com/guide/topics/ui/actionbar.html
和最好的工作示例教程... http://www.androidhive.info/2013/11/android-working-with-action-bar/
希望它对你有所帮助。