我一直在尋找這個問題的直接答案很長一段時間了。我想知道的是如何在ListView上實現一個自定義高亮,它只會高亮ListView項的子佈局(在這種情況下,我希望突出顯示該項的RelativeLayout)。ListView - 突出顯示項目的子佈局
下面是已經有了打算在我的屏幕截圖:Fail
這裏是list_item.xml代碼:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="72dp"
android:clickable="false">
<RelativeLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="@drawable/card_layout">
<LinearLayout android:id="@+id/linearLayout_thumbnail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_vertical">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/imageView_thumbnail"/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="50dp"
android:orientation="vertical"
android:layout_toRightOf="@+id/linearLayout_thumbnail"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView_title"
android:paddingLeft="5dp"
android:textSize="18dp"
android:text="SOME TEXT" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView_subtitle"
android:paddingLeft="5dp"
android:textSize="12dp" />
</LinearLayout>
<TextView
android:id="@+id/textView_other"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="12dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"/>
</RelativeLayout>
</FrameLayout>
而且爲ListView該照片的代碼:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#e5e5e5">
<ListView android:id="@+id/listView_something"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:listSelector="@drawable/list_item_selector"
android:drawSelectorOnTop="true"/>
</LinearLayout>
爲list_item_selector.xml代碼:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/list_item_selected" android:state_pressed="true"/>
<item android:drawable="@android:color/transparent" android:state_focused="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
下面是該card_layout.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle"
android:dither="true">
<corners android:radius="2dp"/>
<solid android:color="#ccc" />
</shape>
</item>
<item android:bottom="2dp">
<shape android:shape="rectangle"
android:dither="true">
<corners android:radius="2dp" />
<solid android:color="@android:color/white" />
<padding android:bottom="7dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
</shape>
</item>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/list_item_selected" android:state_pressed="true"/>
<item android:drawable="@android:color/transparent" android:state_focused="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
這裏的時候我切換的RelativeLayout的背景選擇了ListView的使用,並更改ListView控件,以便它的選擇是什麼情況透明:Sort of working
因此,無論出於何種原因,card_layout.xml文件不允許在選擇器信息之前具有兩項,並且一切都變得很奇怪。任何人都可以告訴我這是如何正確實施? Like Google Play Music(這可能不是最好的例子,因爲它看起來像一個GridView或沿着這些線的東西)
我必須實現一個GridView來顯示這個列表嗎?