1

画面上のグリッドを非表示および表示するオプションが画面に表示されているアプリケーションを作成しています。CustomView でこのグリッドを作成しましたが、正常に動作していました。しかし、グリッドを非表示にして表示をクリックすると、水平線が表示されません...助けてください...

カスタム ビュー

<com.***.GridLinesView
    android:id="@+id/cameraView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" />

OnClick 非表示/再表示ボタン

        @Override
        public void onClick(View v) {
            // get an image from the camera
            View grid = (View)findViewById(R.id.cameraView1);

            if(grid.getVisibility() == View.VISIBLE)
                grid.setVisibility(View.INVISIBLE);
            else
                grid.setVisibility(View.VISIBLE);
                }

カスタム ビュー

public class GridLinesView extends View {

    private Paint p;
    int width = 0;
    int height = 0;
    int pass = 0;
    int xpos = 0;
    int ypos = 0;

    public GridLinesView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        p = new Paint();
        p.setColor(Color.WHITE);
        p.setStyle(Paint.Style.STROKE);
        p.setStrokeWidth(1);
        p.setAntiAlias(true);
    }

    public GridLinesView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        p = new Paint();
        p.setColor(Color.WHITE);
        p.setStyle(Paint.Style.STROKE);
        p.setStrokeWidth(1);
        p.setAntiAlias(true);
    }

    public GridLinesView(Context context, AttributeSet attrs) {
        super(context, attrs);
        p = new Paint();
        p.setColor(Color.WHITE);
        p.setStyle(Paint.Style.STROKE);
        p.setStrokeWidth(1);
        p.setAntiAlias(true);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);
        width = getWidth();
        height = getHeight();
        int ratio = 5;
        if(width < 300 || height < 300){
            ratio = 3;
        }
        xpos = width / ratio;
        ypos = height / ratio;
        p.setStyle(Style.STROKE);
        for (int i = 0; i < ratio; i++) {
            p.setColor(Color.argb(100, 255, 255, 255));
            canvas.drawLine(0, (ypos * pass) + ratio, width, (ypos * pass) + ratio, p);
            pass++;

        }
        for (int i = 0; i < ratio; i++) {

            p.setColor(Color.argb(100, 255, 255, 255));
            canvas.drawLine(xpos + (xpos * i), 0, xpos + (xpos * i), height, p);

        }
    }

}

どんな助けもかなりのものになるでしょう...ありがとう。

4

0 に答える 0