自定义创建视图

时间:2015-04-07 13:41:07

标签: android dynamic android-custom-view ondraw custom-view

我创建了一个自定义视图,在单独的矩形框中显示数字的数字:

enter image description here

onDraw()的代码如下:

protected void onDraw(Canvas canvas){
    Rect rect = new Rect(20, 20, 170, 220);

    int xx = rect.left + 12;
    int yy = (rect.bottom - 25);

    int yyy = (rect.bottom +10);
    int xxx = (rect.left-10);

    for (int i = counter,j=0; i >= 0; i--,j++) {
        // Drawing the rectangle and using the rectangle as reference, drawing the digit.
        drawColoredDigit(canvas, rect, String.valueOf(digits[i]),xx,yy);
        // Updating the reference values for the rectangle, and in turn for the digits inside the reference.
        rect.left += (20 + 150);
        rect.right += (20 + 150);
        xx = (rect.left+ 20);
        xxx = (rect.left - 20);

        if(((counter-j)%3==0)&&(counter!=j))
        {
            canvas.drawText(",",xxx,yyy,commaPaint);
            rect.left += 20;
            rect.right += 20;
            xx = (rect.left + 20);
        }

    }
}

private void drawColoredDigit(Canvas canvas, Rect rect, String digit, int xx, int yy) {
    canvas.drawRect(rect, widgetPaint);
    canvas.drawText(digit, xx, yy, textPaint);
}

是否有一种方法可以使此代码更具动态性,以便根据数字的长度选择呈现数字的矩形的大小。然后,基于渲染的矩形的大小来选择数字的大小。 还需要处理各种设备上的像素的处理。 基本上是试图使视图更具动态性。

1 个答案:

答案 0 :(得分:0)

我已经看到一些浮动在TextView周围的实现会自动调整文本大小以适应视图的大小。我的建议是从其中一个开始,并在文本上使用跨度,而不是尝试自己绘制矩形和事物。请查看ForegroundColorSpanBackgroundColorSpan,然后使用SpannableString将跨度附加到文本中。