我正在尝试将画布视图添加到水平滚动视图中的相对布局。
<?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>
我创建了一个名为CanvasView的类,它扩展了View,我通过覆盖onDraw()绘制了一些基本形状。但是当我这样做时,画布不会出现在relativelayout中:
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()
根本没有触发,因此没有绘制画布...有关如何解决此问题的任何想法?
答案 0 :(得分:2)
我目前无法自行测试,但我认为您的问题是您没有将任何LayoutParams应用于View,可能意味着它不占用任何屏幕空间。如果一个视图在屏幕外或完全被遮挡,或者系统决定其绘制的任何内容都不可见,那么我相信onDraw()根本不会被调用。
在将其添加到RelativeLayout时,尝试为View设置一些宽度和高度:
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(50,50);
rLayout.addView(cView, params);