0

スクロールビュー内にある線形レイアウト内に複数の長方形を描画しようとしています。これは、長方形ビューの私のコードです:

private class RectView extends View{

    int leftX, rightX, topY, bottomY;
    boolean isAppt;
    private Paint rectPaint;
    private Rect rectangle;

    public RectView(Context context, int _leftX, int _rightX, int _topY, int _bottomY, boolean _isAppt){
        super(context);
        leftX = _leftX;
        rightX = _rightX;
        topY = _topY;
        bottomY = _bottomY;
        isAppt = _isAppt;
        init();
    }

    private void init(){

            rectPaint = new Paint();

        if(isAppt){
            rectPaint.setARGB(255, 0, 0, 255);
            rectPaint.setColor(Color.BLUE);
        }
        else{
            rectPaint.setARGB(255, 0, 0, 0);
            rectPaint.setColor(Color.WHITE);
        }
        rectPaint.setStrokeWidth(2);
        rectPaint.setStyle(Style.STROKE);
        rectangle = new Rect(leftX, topY, rightX, bottomY);

    }

    protected void onDraw(Canvas canvas){
        super.onDraw(canvas);

        canvas.drawRect(rectangle, rectPaint);
    }

}

そして、これは私が現在長方形を表示しようとしている方法です:

RectView rv = new RectView(context, 0, 100, 0, 100, true);
firstDemarc.addView(rv);
firstDemarc.postInvalidate();

firstDemarc は、スクロールビュー内の線形レイアウトです。現在、私は長方形を見ていません。onDraw 関数は呼び出されていません。スクロールビュー内に長方形を正しく表示するにはどうすればよいですか?

4

1 に答える 1

0

ビューにいくつかのレイアウト パラメータを指定する必要があります。

int width = right - left;
int height = bottom - top;
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width, height);
params.leftMargin = left;
params.topMargin = top;
setLayoutParams(params);

四角形を描画するときは、0,0 から四角形の幅/高さまで描画する必要があります。リニア レイアウトは、マージン / レイアウト パラメータに従って配置を処理します。

于 2013-11-12T01:52:54.797 に答える