使用自定义视图并重写onDraw来绘制数字。包含视图的布局可以使用尺寸(来自res/values /)来指定其大小,并且视图将根据这些尺寸自动计算出数字之间的字体大小和间距。
E.g.
自定义视图:
public class ColumnNumbersView extends View
{
private final static int NUMBER_OF_COLUMNS = 25;
private float textSize;
private final Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
...
获取大小:
@Override
protected void onLayout(...
{
super.onLayout(...
// work out our text size from getHeight()
textSize = getHeight()/2; // or something like that
// work out the spacing between the numbers along the x axis
textPosXInc = (getWidth()/NUMBER_OF_COLUMNS)/2; // or something like that
}
做绘图:
@Override
protected void onDraw(final Canvas canvas)
{
super.onDraw(canvas);
int x = 0;
for(int i=0; i < NUMBER_OF_COLUMNS; i++)
{
final String number = String.valueOf(i);
final int halfWidth = textPaint.measureText(number)/2;
canvas.drawText(number, x - halfWidth, 0, textPaint);
x += textPosXInc;
}
}
这应该汲取的东西密切,第一个和最后一个号码不会尽管画正确,我会留下来让你解决。
编辑
请记住,你不能使用WRAP_CONTENT对这一观点的尺寸,因为它没有指定的大小为覆盖onMeasure包()。所以它需要设置特定的尺寸或match_parent。
来源
2013-03-01 08:00:56
nmw
这可以工作,我相信文字的大小可以从视图宽度中提取。现在试试这个。 – JehandadK 2013-03-01 10:05:08
感谢您的想法。我在文本和检查measuretext之间添加更多空格以确保文本dosent溢出。 – JehandadK 2013-03-01 16:35:28