2016-01-19 91 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

只是一個示例,給出有關您的問題或源代碼的更多描述 –