水平スクロール ビュー内の相対レイアウトにキャンバス ビューを追加しようとしています。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:background="#fff"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/hsv"
android:layout_width="fill_parent"
android:background="#EEDB00"
android:layout_height="30mm">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/canvas"
android:background="#000"
android:layout_width="300mm"
android:layout_height="20mm">
</RelativeLayout>
</HorizontalScrollView>
</RelativeLayout>
View を拡張する CanvasView というクラスを作成し、onDraw() をオーバーライドしていくつかの基本的な図形を描画しました。ただし、次の場合、キャンバスは相対レイアウトに表示されません。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
cView = new CanvasView(this);
rLayout = (RelativeLayout)this.findViewById(R.id.canvas);
rLayout.addView(cView);
}
ただし、呼び出しsetContentView(cView);
て直接追加すると機能します。掘り下げてみると、 を呼び出すaddView()
と、onDraw()
がまったく起動しないため、キャンバスが描画されないことがわかりました...これを修正する方法についてのアイデアはありますか?