在Android中尝试更改线条粗细时出现奇怪的线条绘制行为

在Android中尝试更改线条粗细时出现奇怪的线条绘制行为,android,android-xml,Android,Android Xml,我在activity_main.xml中放置了一个从视图扩展的类,我想在它周围画一个边界。因此,我将坐标存储在数组中,并调用线条绘制函数,如下所示: private void initView(Context ctx) { if(!initialized) { initialized = true; linePaint.setColor(Color.GREEN); // linePaint.setStrokeWidth(2.0f);

我在activity_main.xml中放置了一个从视图扩展的类,我想在它周围画一个边界。因此,我将坐标存储在数组中,并调用线条绘制函数,如下所示:

private void initView(Context ctx) {
    if(!initialized) {
        initialized = true;
        linePaint.setColor(Color.GREEN);
        // linePaint.setStrokeWidth(2.0f);

    }
}

@Override
public void onDraw(Canvas canvas) {
    if(cachedBitmap == null) {
        // cachedBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Config.ARGB_8888);
        cachedBitmap = Bitmap.createBitmap(getWidth(), 200, Config.ARGB_8888);
        // cachedBitmap.setHasAlpha(false);
        // cachedBitmap.eraseColor(Color.WHITE);
        cachedCanvas = new Canvas(cachedBitmap);
    }

    COORDS[0][0] = 0.0f;    // Left-Top
    COORDS[0][1] = 0.0f;

    COORDS[1][0] = 0.0f;    // Left-Bottom
    COORDS[1][2] = getHeight();

    COORDS[2][0] = getWidth();  // Right-Bottom
    COORDS[2][3] = getHeight();
    Log.d("MYLOG", "(2,0)="+Float.toString(COORDS[2][0])+"   "+"(2,1)="+Float.toString(COORDS[2][4]) );

    COORDS[3][0] = getWidth();  // Right-Top
    COORDS[3][5] = 0.0f;

    ///*
    // drawLine(COORDS[0][0], COORDS[0][6], COORDS[1][0], COORDS[1][7], linePaint);
    // drawLine(COORDS[0][0]+5.0f, COORDS[0][8]+5.0f, COORDS[1][0]+5.0f, COORDS[1][9]+5.0f, linePaint);
    canvas.drawLine(COORDS[0][0], COORDS[0][10], COORDS[1][0], COORDS[1][11], linePaint);
    cachedCanvas.drawLine(COORDS[0][0], COORDS[0][12], COORDS[1][0], COORDS[1][13], linePaint);


    // */

     /*
    canvas.drawLine(0.0f, 0.0f, 100.0f, 0.0f, linePaint);
    cachedCanvas.drawLine(0.0f, 0.0f, 100.0f, 100.0f, linePaint);
    // */

    canvas.drawLine(COORDS[1][0], COORDS[1][14], COORDS[2][0], COORDS[2][15], linePaint);
    cachedCanvas.drawLine(COORDS[1][0], COORDS[1][16], COORDS[2][0], COORDS[2][17], linePaint);

    canvas.drawLine(COORDS[2][0], COORDS[2][18], COORDS[3][0], COORDS[3][19], linePaint);
    cachedCanvas.drawLine(COORDS[2][0], COORDS[2][20], COORDS[3][0], COORDS[3][21], linePaint);

    canvas.drawLine(COORDS[3][0], COORDS[3][22], COORDS[0][0], COORDS[0][23], linePaint);
    cachedCanvas.drawLine(COORDS[3][0], COORDS[3][24], COORDS[0][0], COORDS[0][25], linePaint);

    canvas.drawBitmap(cachedBitmap, 0.0f, 0.0f, null);  // Set position of bitmap within the canvas
}  
这给了我以下输出

即使getWidth()和getHeight()返回了正确的值

不管怎么说,我想把线条加粗一点,让输出看起来更清晰,所以我 取消对行的注释
//linePaint.setStrokeWidth(2.0f),但现在输出如下:

  • 为什么会这样
  • 如何更改线条的厚度 --_编辑--

    这是视图在活动\ u main中的显示方式:

       <com.example.mybasicinteractivegraph.GraphBoarder
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:text="@string/hello_world" />  
    
    
    
    ---编辑2---
    使用android:layout\u width=“wrap\u content”


  • COORDS到底代表什么?如果它保存坐标,如何存储?作为(x,y)对?坐标[0][0]是左上角的x坐标,坐标[0][1]是左上角的y坐标,依此类推。onDraw()函数中的注释中提到了它是的,但是您有一些值,例如
    COORDS[0][10]
    COORDS[3][24]
    。它们到底代表什么?这是怎么发生的??发布此问题时一定有错误,我将修复它。确定编辑了我的问题。