如何创建类似gmail的收件人(用户)自定义视图

时间:2014-01-13 10:53:23

标签: android gmail android-custom-view

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

enter image description here

到目前为止,我创建了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布局中指定的行间距。如果我删除行间距,则第一行和第二行的背景将相互接触,如下图所示。

enter image description here

我在这里朝着正确的方向前进吗?有没有我错过的东西?

2 个答案:

答案 0 :(得分:3)

答案 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/

希望它对你有所帮助。