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