2011-12-16 61 views
1

我的Android listview出現問題。我的列表使用自定義的數組適配器,它爲消息圖像設置onClickListener,並且列表中有一個onItemClickListener。這一切都可以正常工作,但正如您在下面的屏幕截圖中看到的,圖像不會填充它的父級。 因此,當我點擊圖片上方,下方或右側時,onItemClickListener被調用。Android ListView row padding/margin

我的願望是將這一行分成兩部分。我相信這個解決方案位於row.xml或ListView的xml中。我怎樣才能用我的圖像填充整行?

The Screen Shot

row.xml

<?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="?android:attr/listPreferredItemHeight" 
android:padding="6dip" 
android:background="@drawable/listitem_background" 
android:id="@+id/row2"> 
<ImageView 
    android:id="@+id/icon" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_marginRight="6dip" 
    android:src="@drawable/logominimini" /> 
<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="0dip" 
    android:layout_weight="1" 
    android:layout_height="fill_parent"> 
    <TextView 
     android:id="@+id/toptext" 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" 
     android:singleLine="true" 
     android:textColor="@color/darkgreen" 
     android:textStyle="bold" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
    /> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" 
     android:id="@+id/bottomtext" 
     android:singleLine="true" 
     android:ellipsize="marquee" 
     android:textColor="@color/black" 
    /> 
</LinearLayout> 
    <TextView 
     android:id="@+id/divider" 
     android:layout_width="3dp" 
     android:layout_height="fill_parent" 
     android:background="@drawable/divider_background" 
     android:visibility="gone"/> 
<ImageView 
    android:id="@+id/selectmessage" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_centerVertical="true" 
    android:visibility="visible" 
    android:paddingRight="20dp" 
    android:paddingLeft="40dp" 
    android:background="@drawable/listitem_background" 
    android:layout_marginLeft="0dip" 
    android:layout_marginRight="0dip" 
    android:layout_gravity="center_vertical" 
    android:src="@drawable/messageunselected" /> 

    </LinearLayout> 

列表視圖:

<ListView 
android:id="@+id/android:list" 
android:fastScrollEnabled="true" 
android:listSelector="@drawable/listitem_background" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent"></ListView> 

回答

4

刪除評論財產android:padding="6dip",把它的ImageView或其他地方,但不是在父母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="?android:attr/listPreferredItemHeight" 
<!-- remove this: android:padding="6dip" --> 
android:background="@drawable/listitem_background" 
android:id="@+id/row2"> 
<ImageView 
    android:id="@+id/icon" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_marginRight="6dip" 
    android:src="@drawable/logominimini" /> 
<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="0dip" 
    android:layout_weight="1" 
    android:layout_height="fill_parent"> 
    <TextView 
     android:id="@+id/toptext" 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" 
     android:singleLine="true" 
     android:textColor="@color/darkgreen" 
     android:textStyle="bold" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
    /> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" 
     android:id="@+id/bottomtext" 
     android:singleLine="true" 
     android:ellipsize="marquee" 
     android:textColor="@color/black" 
    /> 
</LinearLayout> 
    <TextView 
     android:id="@+id/divider" 
     android:layout_width="3dp" 
     android:layout_height="fill_parent" 
     android:background="@drawable/divider_background" 
     android:visibility="gone"/> 
<ImageView 
    android:id="@+id/selectmessage" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_centerVertical="true" 
    android:visibility="visible" 
    android:paddingRight="20dp" 
    android:paddingLeft="40dp" 
    android:background="@drawable/listitem_background" 
    android:layout_marginLeft="0dip" 
    android:layout_marginRight="0dip" 
    android:layout_gravity="center_vertical" 
    android:src="@drawable/messageunselected" /> 

    </LinearLayout> 
+1

非常感謝。自從我通過示例獲得佈局後,我錯過了詳細信息。這是結果,因爲我想要它:http://dl.dropbox.com/u/24622131/device-2011-12-16-124434.png – 2011-12-16 11:45:12

0

要填充整行的圖像第一幅圖像或最後一幅圖像

對於這兩個ImageView你保持填充,那麼這些如何可以填寫父項?

請檢查您的代碼一次,您的問題也不清楚。

我看到你的截圖,我以爲你在談論第二個圖像視圖。

如果是這樣,然後刪除ImageView中的填充。

我認爲它會幫助你。