4

Androidで縦線を引こうとしています。

DrawView drawView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    drawView = new DrawView(this);
    setContentView(drawView);

}

public class DrawView extends View {
    Paint paint = new Paint();

    public DrawView(Context context) {
        super(context);
        paint.setColor(Color.RED);
    }

    @Override
    public void onDraw(Canvas canvas) {
            canvas.drawLine(0, 100, 0, 0, paint);

    }

}

なんとこれが1本の線を引くだけ。私がやりたいことは、この線を画面全体に描きます。どうやってやるの?画面のどこにでも垂直に描画する必要があります。垂直に描画されるようになりましたが、1 つだけです。

4

1 に答える 1

3

ご希望のユースケースとはかけ離れていますが、これにカスタムビューを使用する理由はありません。リピートを有効にしてカスタム背景を設定できます。

res/drawable/MyBackground.xml

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/lines_image"
    android:tileMode="repeat" />

次に、ビューの背景を設定します。

res/layout/whatever.xml

<View
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/MyBackground" />

また

myView.setBackgroundResource(R.drawable.MyBackground);

lines_image.png は 20 ピクセル (または必要な間隔) の幅の画像で、右側に赤い線がある必要があります。

これは、UI 開発の重要な概念です。単純な画像ソリューションで十分な場合は、コードで複雑なことをしないでください。

絶対に **MUST** コードでこれを行う場合は、キャンバスの幅のループで描画を行うだけです。

private static final int LINE_SPACING = 20;

@Override
public void onDraw(Canvas canvas) {
    for (int x = 0; x < canvas.getWidth(); x += LINE_SPACING) {
        canvas.drawLine(x, 0, x, canvas.getHeight(), paint);
    }
}
于 2013-03-28T17:00:06.680 に答える