描画する View を拡張するクラスがあります。
ビューが特定の寸法を持つ RelativeLayout の子として設定されているにもかかわらず、ビューのキャンバスは幅が 1280 (デバイスと同じ幅) であると報告します。
キャンバスをそのビューのサイズによって制約するために何をする必要があるかを理解しようとしています(常識が示すように)。
私が見落としていることに興味があります...ここに関連するコードスニペットがあります...
dv = new DrawView(this, getWindowManager());
dv.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
//this wrapper is 500x500
((RelativeLayout)findViewById(R.id.drawWrapper)).addView(dv);
L.log("DRAWVIEW WIDTH = " + dv.getWidth()); //this reports 0... why?
DrawView内...
@Override
public void onDraw(Canvas canvas) {
L.log("CANVAS WIDTH ON DRAW = " + canvas.getWidth()); //this always reports 1280 on xoom
this.canvas = canvas;
drawElementsOntoCanvas(canvas, true, false);
...
}
私が見落としているものはありますか、またはビュー内のキャンバスは常に画面全体の幅と高さですか?
相対レイアウトの XML:
<RelativeLayout
android:id="@+id/drawWrapper"
android:layout_width="500px"
android:layout_height="500px"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dip"
android:clipChildren="true"
android:background="@drawable/cut_out_frame"
/>