Android 如何在画布上绘制相对线?
我想画一个带有所有子项的Android 如何在画布上绘制相对线?,android,canvas,android-relativelayout,Android,Canvas,Android Relativelayout,我想画一个带有所有子项的RelativeLayout到Canvas 这就是我一直想做的: // from View constructor container = (RelativeLayout) LayoutInflater.from(context).inflate(R.layout.containerLayout, null); @Override protected void onSizeChanged(int w, int h, int oldw, i
RelativeLayout
到Canvas
这就是我一直想做的:
// from View constructor
container = (RelativeLayout) LayoutInflater.from(context).inflate(R.layout.containerLayout, null);
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
container.layout(0,0, w, h);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawRGB(0, 0, 0);
container.draw(canvas);
}
我调试并看到onSizeChanged
调用时具有良好的值。这段代码也适用于ImageView
,那么RelativeLayout
有什么不同呢
我的问题是它不会在屏幕上画画,我没有看到它的任何孩子。如何解决此问题?请检查以下示例。 在我这边,它工作得很好
RelativeLayout layout = new RelativeLayout(getContext());
TextView textView = new TextView(getContext());
textView.setVisibility(View.VISIBLE);
textView.setText("This is example");
layout.addView(textView);
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10);
layout.measure(canvas.getWidth(), canvas.getHeight());
layout.layout(0, 0, canvas.getWidth(), canvas.getHeight());
layout.draw(canvas);
添加RelativeLAyout.mesure()可以解决这个问题
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
container.measure(w, h);
container.layout(0,0, w, h);
}
@HrundiV.Bakshi I补充了对该问题的澄清。我的问题是它现在正在显示。用相对布局包装textview并告诉我它是否有效,这正是我示例中的不同之处。这只是一个示例,请详细描述您的问题或源代码