2012-03-01 33 views
4

我試圖讓adapterview正確繪製其子視圖,但無法獲取適配器返回的視圖的子視圖進行繪製。具體來說,我的適配器應該吐出簡單的看法是這樣的:使用adapterview時,無法在視圖組中繪製子視圖

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FFFFFF"> 

     <TextView 
      android:id="@+id/photo_cell_contents" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10px" 
      android:text="@string/photo_cell_default_text" 
      android:textColor="#000000" 
      android:textSize="80px"/> 

</LinearLayout> 

適配器的getView()方法被調用,並確實返回此欣賞到適配器視圖的實例。我還在我的adapterview中添加了斷點,並且可以看到存在適當的視圖層次結構 - 具有子級textview對象的根線性佈局。但是,當適配器視圖佈局並繪製適配器返回的子視圖時,內部文本視圖不會被繪製。我看到與每個單元格對應的實際彩色框,但不包括應該出現在內部的文本。有沒有人知道爲什麼會發生這種情況?下面是,規定了兒童的意見(這時候我setAdapter得到補充()和我通過適配器視圖滾動會得到更新)適配器視圖的onLayout()方法的代碼:

for (int idx = 0; idx < this.getChildCount(); idx++) { 
     if (idx != dragged) 
     { 
      Point xy = getCoorFromIndex(idx); 
      View child = getChildAt(idx); 
      child.layout(xy.x, xy.y, xy.x + childSize, xy.y + childSize); //view group will layout the children based on the sizes determined for available columns 
      int left = child.getLeft(); 
      int right = child.getRight(); 
      int top = child.getTop(); 
      View tv = ((ViewGroup)child).getChildAt(0); 
      int tvleft = tv.getLeft(); 
      int tvright = tv.getRight(); 
      int tvtop = tv.getTop(); 

      Log.i("dgv", "Here is info about main view ... left = " + left + "; right = " + right + "; top = " + top); 
      Log.i("dgv", "Here is info about text view ... left = " + tvleft + "; right = " + tvright + "; top = " + tvtop); 


     } 
    } 
+0

一個想法:你沒有正確設置文本?如果它正在繪製視圖,則問題可能是文本設置。如果您發佈了一些代碼,我可以嘗試幫助您進行調試。 – AJcodez 2012-03-01 18:15:49

+0

你有想過嗎?有類似的問題... – NPike 2012-04-04 01:30:44

+0

是的,見下文。 – Faisal 2012-05-02 15:42:51

回答

2

問題我需要在適配器視圖的佈局方法中測量和佈置子視圖。在添加代碼以測量子視圖並調用child.layout()之後,視圖正確顯示。希望這可以幫助。

+0

你能分享一下你以前的代碼嗎?我在嘗試從適配器視圖顯示視圖時遇到類似的問題。 – murtuza 2014-07-01 14:46:10