2016-01-19 89 views
1

我想画一个RelativeLayout及其所有的孩子到Canvas如何将RelativeLayout绘制到画布上?

这是我一直在努力做:

// 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与以前的不同?

我的问题是,它不画在屏幕上,我没有看到它的任何孩子。如何解决这个问题?

+0

@ HrundiV.Bakshi我为问题添加了说明。我的问题是它现在正在显示。 –

回答

0

工作正常添加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); 
} 
0

检出以下示例。 这是我的最终

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); 
+0

用相对布局包装textview并告诉我它是否有效,这与我的示例中的差异 –

+0

只是一个示例,给出有关您的问题或源代码的更多描述 –