绘制图形时,无法看到生成的图像

时间:2011-02-07 16:04:19

标签: android canvas graph draw

我正在尝试在Android中绘制图表。我希望图形缩放到当前屏幕大小,因此不是在常量中显式设置它们,而是获得用于包含图形的LinearLayout的大小。但是,存在一个问题,即无法在活动onCreate()中获取大小,因此我使用自定义的LinearLayout覆盖onSizeChanged()。我将它包含在布局中:

view class="com.nnevod.loggraph.graph$GraphDisplayLayout"
    android:layout_height="fill_parent"
    android:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_weight="1"
    android:background="@color/White"

我省略了尖括号。

在重写的o nSizeChanged()中,读取视图的尺寸,然后按照许多图形示例中的描述完成所有操作:创建位图,传递给图形绘制类,创建ImageView,使用Bitmap设置,然后添加到自定义LinearLayout。

问题是,图表的图像不可见。但是,如果我尝试使用HierarchyViewer进行检查,则图像会变得可见。如果我将代码从onSizeChanged()剪切粘贴到活动的onCreate(),使用预设尺寸而不是测量尺寸,则所有内容都会很好地显示。

所以,我的问题是我做错了什么?我假设我在自定义onSizeChanged()中使用了错误的上下文,或者无法从那里更新视图,我应该以某种方式将测量的维度传递给活动并进行附件一些活动方法中的位图。 虽然在上下文部分,我尝试使用所有可用的上下文,包括使用活动的上下文,但无济于事。

如果需要,我会提供更多代码。

1 个答案:

答案 0 :(得分:1)

我有一次类似的问题,我被告知Hierarchy查看器的作用是requestLayout()。所以,我被告知,我可能忘了把它称之为某个地方,但我不认为我这样做了。后来我发现类似的情况被报告为一个错误,是找到在某处调用requestLayout()的方法。

这很奇怪,因为实际上在某些条件下工作起作用(在这里和那里添加一些随机视图,或更新图纸)。无论如何,最后我更喜欢创建一个自定义视图,只需直接绘制我需要的东西(并且在onMeasure之后绘图时,制作自适应绘图没有问题。)

(有趣的是关于图表!)

引用(1)(2)