2011-10-18 23 views
2

下午好!RelativeLayout與列表視圖項目的行爲不同

我面臨的一個惱人的佈局問題,我有時間和調查的時間......之後沒有解釋:/。 我創建了一個簡化的測試案例,我在這裏介紹。

我有一個簡單的列表項的佈局。

list item http://www.freeimagehosting.net/4075a.jpg

lis item image link

XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/relativeLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="96dp"> 

<TextView android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="TextView" 
    android:id="@+id/textView1" android:textAppearance="?android:attr/textAppearanceMedium" 
    android:layout_centerVertical="true" android:layout_centerHorizontal="true" /> 

<TextView android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:text="TextView" 
    android:id="@+id/textView2" android:layout_alignParentTop="true" /> 

<ImageView 
    android:layout_width="10dp" 
    android:layout_height="match_parent" 
    android:id="@+id/imageView1" 
    android:src="@drawable/errorindicator" 
    android:layout_below="@id/textView2" /> 

</RelativeLayout> 

的errorindicator是一個紅色矩形,你可以在圖像上看到左側。該XML看起來像:

<?xml version="1.0" encoding="utf-8"?> 
    <shape shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="@color/ControllingConflictColor" /> 
    <padding android:left="0dp" android:top="0dp" 
     android:right="0dp" android:bottom="0dp" /> 
    </shape> 

所描述的列表項佈局按預期工作。

現在我嘗試填充列表項如上所述的列表視圖。結果看起來像這樣:

list view with list items http://www.freeimagehosting.net/4cc4b.jpg

list view image link

相應的XML:

<?xml version="1.0" encoding="utf-8"?> 
    <ListView android:id="@+id/listView1" android:layout_width="fill_parent" 
     android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> 
     <!-- Preview: [email protected]/test --> 
    </ListView> 

正如你可以在圖像上看到,紅色矩形不匹配它的父在高度,因爲它應該。這些圖像是由設計師製作的,但仿真器和設備也具有相同的效果。我開發API級別8

**我很願意,如果有人能解釋我爲什麼如預期在列表視圖中所描述的佈局不起作用。爲什麼可繪製的形狀表現不同? **

感謝您的時間:)

編輯:我有嵌入圖像的問題,我用一個鏈接,而不是,對不起;( 編輯:添加XML抽拉標籤

編輯:我的例子甚至可以變得更容易,我包含兩個文本視圖,因爲它與我的真實佈局有一些相似之處,您可以從示例中移除兩個文本視圖,但仍然存在問題,如果在列表視圖中使用佈局,則圖像視圖與定義的父級高度不匹配。

+0

您希望的佈局設計是什麼? – Venky

+0

你需要在所有文本視圖下面的一行嗎? – Venky

+0

Venky您可以在第一個鏈接的圖像中看到所需的設計。問題是,如果我在列表視圖中使用所描述的相對佈局,可繪製的紅色形狀的行爲會有所不同。 –

回答

0

因爲我想我的期望行爲是不可能的使用給定的佈局管理器,我去哪個適合我的個人情況的另一種方式。

我已經重寫了的RelativeLayout的onDraw有方法和油漆這紅色矩形自己(完佈局處理結束後,高度設定)...

0

我也發現很難使用RelativeLayout來完成它。那麼試試你的行XML的佈局。它使用LinearLayout。

<?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="wrap_content" 
    android:orientation="vertical"> 
    <TextView android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView" 
     android:id="@+id/textView2" 
     android:layout_alignParentTop="true" /> 
    <LinearLayout android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
     <LinearLayout android:layout_width="10dip" 
      android:layout_height="fill_parent" 
      android:background="@drawable/errorindicator"/>  
     <TextView android:layout_width="0dip" 
      android:layout_height="wrap_content" 
      android:text="TextView" android:layout_weight="1.0" 
      android:id="@+id/textView1" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:gravity="center"/> 
    </LinearLayout> 
</LinearLayout> 
+0

謝謝你的回答blessenm。如果我在列表視圖中使用描述的相對佈局,問題描述是一個簡化示例,以顯示可繪製形狀與父級高度不匹配。因此,如果在列表視圖中使用相同佈局的行爲是不同的。我知道有不同的方法可以在視覺上達到與我的例子相同的效果,但是佈局比相對佈局更簡單和高效。問題更多的是,爲什麼可繪製的形狀表現不同。我想在列表視圖的佈局過程中肯定有不同的東西... –

+0

我注意到,當爲可繪製的形狀指定大小時,它就出現了。稍後可能會嘗試一下,看看有什麼不對,因爲它對我來說也很奇怪。 – blessenm

+0

非常感謝!請注意,我編輯了我的問題並指出,文本視圖不相關。 –

0

如果進行資產爲PNG,然後你可以9補丁並將其添加爲RelativeLayout的背景

+0

感謝您的建議。我沒有嘗試過,但我可以想象,這也可以作爲解決方法(即使沒有9補丁和現有的形狀可繪製)。但它仍然不能回答我的問題;( –

相關問題