2010-07-20 239 views
1

我一直在創建XML的相對佈局時遇到問題,列表項要用於ListView中的一系列項目。我已經嘗試了好幾個小時,並試圖讓我的頭髮看起來如何,但不能讓所有東西出現在正確的位置,而且不會重疊或錯位。我可以獲得第一張圖片和下兩個文字瀏覽,但無法獲得最後一個textview和imageview。Android相對佈局佈局問題

我附上了一個線框樣式的圖像,我想如何看它,並想知道是否有人可以幫我嗎?

alt text http://i26.tinypic.com/6fz702.jpg

  • 右邊的ImageView的是與它周圍的填充行的整個高度的一組圖標?
  • 這兩個TextView佔據了寬度的大部分。地址textview有可能文本很長,所以如果它的空間不足,可能需要截斷,或理想的字體大小縮小?
  • 下一個TextView將只保存最多5個字符的小字符串。
  • 最後一個ImageView是一個小箭頭,暗示此列表項可點擊獲取更多信息。它需要如圖所示居中。
  • 我想如果圖標,上一個textview和最後一個圖像總是在列表中相同的地方/對齊。

如果有人能在此提供一些幫助,我將非常感激。

乾杯傢伙

回答

11

任何有興趣我設法得到這個工作。我知道尋找問題的答案有多麼痛苦,而且它從未完全解決。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/RelativeLayout" 
android:layout_width="fill_parent" 
android:layout_height="?android:attr/listPreferredItemHeight" 
android:padding="6dip"> 
<ImageView 
    android:id="@+id/Icon" 
    android:layout_margin="5dip" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerVertical="true" /> 
<TextView 
    android:id="@+id/topLine" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:lines="1" 
    android:layout_toRightOf="@+id/Icon" 
    android:layout_toLeftOf="@+id/distance" 
    android:textColor="@color/blacktext" 
    android:textSize="20dip" 
    android:text="Name" /> 
<TextView 
    android:id="@+id/bottomLine" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:lines="1" 
    android:layout_toRightOf="@+id/Icon" 
    android:layout_below="@+id/topLine" 
    android:layout_toLeftOf="@+id/distance" 
    android:textColor="@color/blacktext" 
    android:textSize="15dip" 
    android:text="Address" /> 
<TextView 
    android:id="@+id/distance" 
    android:layout_height="wrap_content" 
    android:layout_toLeftOf="@+id/arrow" 
    android:layout_centerVertical="true" 
    android:layout_width="wrap_content" 
    android:lines="1" 
    android:textColor="@color/blacktext" 
    android:textSize="12dip" 
    android:text="100m" /> 
<ImageView 
    android:id="@+id/arrow" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_margin="5dip" 
    android:layout_alignParentRight="true" 
    android:layout_centerVertical="true" 
    android:src="@drawable/redarrow"/> 
</RelativeLayout> 
+0

這不是一個完美的答案,因爲名稱和地址的高度不一樣(每個父母的50%)。 – Wayne 2012-06-20 06:53:33

0

我已經做過類似的(除了在左邊的圖像)

東西它可以幫助你:

<?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:gravity="center_vertical" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
    android:orientation="vertical"> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@+id/TextView01" 
     android:id="@+id/LinearLayout01" 
     android:gravity="center_vertical" 
     android:orientation="horizontal"> 
     <LinearLayout 
      android:layout_width="0dip" 
      android:layout_weight="1" 
      android:paddingRight="8dip" 
      android:layout_height="wrap_content" 
      android:id="@+id/LinearLayout01" 
      android:orientation="vertical"> 
      <TextView 
       android:text="@string/Birthday" 
       android:id="@+id/txtTitlevalue" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:singleLine="true" 
       android:ellipsize="end" 
       android:layout_weight="1" 
       android:textAppearance="?android:attr/textAppearanceLarge"></TextView> 
      <TextView 
       android:text="1960-01-01" 
       android:id="@+id/txtSubvalue" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="-4dip" 
       android:singleLine="true" 
       android:ellipsize="end" 
       android:layout_weight="10" 
       android:textAppearance="?android:attr/textAppearanceSmall"></TextView> 
     </LinearLayout> 
     <TextView 
      android:text="2" 
      android:id="@+id/txtNumber" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:textStyle="bold" 
      android:layout_marginRight="10dip" 
      android:layout_gravity="center_vertical|right"></TextView> 
     <TextView 
      android:text="weeks" 
      android:id="@+id/txtUnit" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginRight="10dip" 
      android:layout_gravity="center_vertical|right"></TextView> 
    </LinearLayout> 
    <!-- <View 
     android:background="@drawable/black_white_gradient" 
     android:layout_width="fill_parent" 
     android:layout_height="1dp" 
     android:layout_marginTop="2dip" 
     android:layout_marginBottom="2dip" 
     android:clickable="true" 
     android:focusable="true" 
     android:layout_below="@+id/LinearLayout01" /> --> 
</LinearLayout> 
+0

謝謝,我可能不得不求助於使用LinearLayout,如果我不能得到這個工作。我已經讀過,雖然使用LinearLayout列表項行,因此讓它爲每一行復制創建了許多不必要的開銷,而RelativeLayout沒有。如果我能找到它,我會再次粘貼鏈接。感謝您的答案,但最終可能會成爲我需要的。 – 2010-07-20 10:58:43

+0

我找到了鏈接:http://www.curious-creature.org/2009/02/22/android-layout-tricks-1/ 而評論:「這種佈局的工作原理,但可以浪費,如果你實例化它用於ListView的每個列表項目,可以使用單個RelativeLayout重寫相同的佈局,從而保存一個視圖,甚至更好地爲視圖層次結構中的一個級別,每個列表項目。 – 2010-07-21 01:42:59