2011-02-07 43 views
0

我想在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" 

我省略了尖括号。

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

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

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

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

回答

1

我曾经有过类似的问题,并且我被告知Hierarchy viewer的功能是requestLayout()。所以,有人告诉我,我可能忘了把它叫到某个地方,但我认为我没有。后来我发现类似的情况被报告为一个错误,是一种解决方法,找到了在某处调用requestLayout()的方法。

这很奇怪,因为实际上在某些情况下工作(在这里或那里添加一些随机视图,或更新图形)。无论如何,最终我最好创建一个自定义视图,它直接绘制我需要的图像(并且在onMeasure之后发生绘图,在制作自适应绘图时没有问题)。

(搞笑再次是关于图!)

引用(1)(2)