Android 如何将绘制的画布添加到布局的特定部分?

Android 如何将绘制的画布添加到布局的特定部分?,android,android-layout,canvas,Android,Android Layout,Canvas,例如,我有一个布局(或布局中的视图),它覆盖了屏幕高度的20%。我想在该部分添加一个绘制的画布。但是我不想将它与setContentView一起使用,因为我无法执行布局操作,例如TextView和EditText等。因此,如何将该自定义类添加到布局中。addView(我的自定义视图扩展类)不工作 注意:比例必须按比例降低,例如,如果我在全屏上绘制,则在添加时,必须降低比例以适应覆盖区域。 这是可行的,但不是期望的 DrawShape ds; @Override protected void o

例如,我有一个布局(或布局中的视图),它覆盖了屏幕高度的20%。我想在该部分添加一个绘制的画布。但是我不想将它与setContentView一起使用,因为我无法执行布局操作,例如TextView和EditText等。因此,如何将该自定义类添加到布局中。addView(我的自定义视图扩展类)不工作

注意:比例必须按比例降低,例如,如果我在全屏上绘制,则在添加时,必须降低比例以适应覆盖区域。

这是可行的,但不是期望的

DrawShape ds;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    ds = new DrawShape(this);
    setContentView(ds); // Dont want it


 }

class DrawShape extends View {

Context c;
Paint p = new Paint();

public DrawShape(Context c)
{
    super(c);
    this.c = c;
}

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

    int width = canvas.getWidth();
    int height = canvas.getHeight();

    p.setStyle(Paint.Style.STROKE);
    p.setAntiAlias(true);
    p.setStrokeWidth(width/40);
    p.setColor(Color.rgb(200,140,0));

    RectF r = new RectF();
    r.set(width/4,height/2-width/4,width-(width/4),height/2+width/4);


    canvas.drawCircle(width / 2, height / 2, width / 4, p);
    canvas.drawLine(0,0,width,height,p);
    canvas.drawLine(width,0,0,height,p);
    canvas.drawLine(0,height/2,width,height/2,p);
 }
} 
这不起作用,没有抽签

LinearLayout ll;
DrawShape ds;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    ds = new DrawShape(this);
    setContentView(R.layout.activity_main);

    ll = (LinearLayout) findViewById(R.id.mainLL);
    mainLL.addView(ds); // Does not work, with layout params it does not work too.


 }

创建一个新的类扩展视图并使用onMeasure方法,您可以根据高度和宽度进行绘制,并使用LinearLayout中的AddView方法将该类添加到当前布局中。我尝试过,它在屏幕上不绘制任何内容。请重新阅读我在那里写的帖子,我已经试过了。除setContentView外,自定义类不绘制任何内容,因此addView不起作用。谢谢。你能分享你的代码吗?请查看我编辑的帖子。hierarchyviewer显示了什么?