2011-02-07 102 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)