Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用画布自定义三角形,要将此视图放置在列表行中吗_Java_Android_Android Canvas - Fatal编程技术网

Java 使用画布自定义三角形,要将此视图放置在列表行中吗

Java 使用画布自定义三角形,要将此视图放置在列表行中吗,java,android,android-canvas,Java,Android,Android Canvas,我使用canvas创建了一个自定义三角形,我创建了一个类,如下所示: @SuppressLint("DrawAllocation") public class GameView extends View { private Bitmap bmp; public GameView(Context context) { super(context); bmp = BitmapFactory.decodeResource(getResources(),

我使用canvas创建了一个自定义三角形,我创建了一个类,如下所示:

@SuppressLint("DrawAllocation")
public class GameView extends View {
    private Bitmap bmp;

    public GameView(Context context) {
        super(context);
        bmp = BitmapFactory.decodeResource(getResources(), R.drawable.days2);
    }
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(Color.WHITE);


        Paint paint = new Paint();
        paint.setStrokeWidth(4);
        paint.setColor(android.graphics.Color.RED);
        paint.setStyle(Paint.Style.FILL_AND_STROKE);
        paint.setAntiAlias(true);
        paint.setShadowLayer(4.0f, 0.0f, 2.0f, Color.BLACK);
        setLayerType(LAYER_TYPE_SOFTWARE, paint);

        Point a = new Point(0, 0);
        Point b = new Point(canvas.getWidth(), canvas.getHeight()/2);
        Point c = new Point(canvas.getWidth(),0);



        Path path = new Path();
        path.setFillType(FillType.EVEN_ODD);
        path.lineTo(b.x, b.y);
        path.lineTo(c.x, c.y);
        path.lineTo(a.x, a.y);
        path.close();

        canvas.drawPath(path, paint);

        canvas.rotate(36);
        paint.setColor(Color.WHITE);
        paint.setTextAlign(Align.CENTER);
        paint.setTextSize(50);
        canvas.drawText("Vertical 45 degree text", (canvas.getHeight()/2)-30 ,0-30 , paint);

    }
}
但是,当我在引用此类的XML中放置视图时,我希望将此形状应用于listview行。它占据了我整个版面的高度。这是我不想要的。如果在dp中指定高度,视图将被剪裁。如何克服这个问题


请不要介意onDraw中的obect分配,我会删除它并在我开始工作后进行优化

也许您可以共享ListView的xml文件。我解决了这个问题,这是我在绘制三角形时的错误,我必须使用
Point c=new Point(canvas.getWidth(),canvas.getHeight()/2)而不是'Point c=新点(canvas.getWidth(),0);`这导致点C一直穿过x,中间穿过y:)