カスタム ビューを使用し、onDraw をオーバーライドして数字を描画します。ビューを含むレイアウトは、サイズを (res/values/ から) 使用して指定できます。ビューは、それらのサイズに基づいて、フォント サイズと数値間の間隔を自動的に決定します。
例えば
カスタム ビュー:
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;
}
}
それは近いものを描くはずですが、最初と最後の数字は正しく描画されませんが、修正するために残します。
編集
onMeasure() をオーバーライドしてラップするサイズを指定しないため、このビューのサイズに wrap_content を使用できないことに注意してください。したがって、特定のサイズ セットまたは match_parent が必要になります。