2012-04-03 113 views
8

我試圖動態地添加創建了幾個RelativeLayouts到LinearLayout中這是一個RelativeLayout的,這是一個滾動型內內。當所有視圖的總高度超過手機屏幕的大小時,所有視圖都會正確顯示。但是,當動態添加視圖的總大小不足以填充屏幕時,只會顯示第一個RelativeLayout元素,其他元素不會顯示在屏幕中。我真的無望,不明白爲什麼。動態添加視圖的RelativeLayout內滾動型

這裏是動態填充線性佈局內享有代碼:

LinearLayout commentsLayout = (LinearLayout) findViewById(R.id.comments_layout); 

LayoutInflater inflater = (LayoutInflater) 
    this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

for(Comment c: commentsList) { 

    RelativeLayout layoutItem = (RelativeLayout) inflater.inflate(
     R.layout.list_item_comment, null, false); 

     TextView tv = (TextView) layoutItem.findViewById(R.id.textView); 
     ImageView iv = (ImageView) layoutItem.findViewById(R.id.imageView); 

     // set tv's text 
     // set iv's image and onclicklistener, nothing fancy here, everything goes well 

     commentsLayout.addView(layoutItem); 
} 

這裏是list_item_comment.xml:

<RelativeLayout 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@color/white" 
> 
    <ImageView 
    android:id="@+id/imageView" 
    android:layout_width="50dip" 
    android:layout_height="50dip" 
    android:layout_alignParentLeft="true" 
    android:layout_marginTop="10dp" 
    android:layout_marginLeft="10dp" 
    /> 

    <TextView 
    android:id="@+id/textView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_margin="10dp" 
    android:textSize="16sp" 
    android:layout_toRightOf="@id/imageView" 
    /> 
</RelativeLayout> 

這裏是此活動的xml文件:

<RelativeLayout 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:id="@+id/main_layout" 
> 
... 

    <ScrollView 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:fillViewport="true" 
    android:id="@+id/scrollView" 
    > 

     <RelativeLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/relativeContainer" 
     > 

     ... 

      <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/comments_layout" 
      /> 

     </RelativeLayout> 

    </ScrollView> 

</RelativeLayout> 

而且截圖:

如果沒有足夠的佈局:(不正確的,需要表現出3條評論)

Incorrect one

有了足夠的佈局:(正確的,畫面充滿)

correct one

我只需要在第一種情況下顯示全部三條評論:/提前致謝。

+0

爲什麼不使用一個ListView與頁眉和頁腳? – 2012-04-04 17:05:59

+0

其實平時我有很多看起來像一個列表中的那些上面的其他觀點:幾個imageviews,按鈕等。所以這不是一個常見的情況,但我需要解決這個情況也是如此,因爲我不能依賴於一個事實,即每此活動中的其他視圖將被初始化。有什麼想法嗎? – ecem 2012-04-29 15:33:55

回答

0

,而不是fill_parent,試着改變你的list_item_comment.xmlwrap_content<RelativeLayout>layout_height

此外,爲什麼您需要在您的活動的xml中的<ScrollView>以內另一個<RelativeLayout>LinearLayout足以完成你想要的活動。也許你可以刪除它。

+0

我想你的建議,但它似乎並沒有解決這個問題:/其實這不是我的活動的一個共同的情況下,通常必須有一個2 imageviews,一個按鈕,幾textviews等因此RelativeLayout的讓我的工作更容易。但這也是一個例子(雖然很少見),所以我應該找到一個解決方案:/emp/ – ecem 2012-04-11 13:53:03

+0

@ecem,你能找到解決方案嗎? – WindsurferOak 2013-09-29 16:33:11