1

我有一個ListView,我已經實現了卡片UI類型的外觀。如果ListView中的某個項目處於「已選擇」或「已按下」狀態,則該項目周圍會出現白色邊框。我想整個視圖有藍色,但不知道如何做到這一點:在卡片UI中突出顯示整個項目ListView

Single item in the ListView

ListView項佈局

<?xml version="1.0" encoding="utf-8"?> 

    <FrameLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     > 

     <RelativeLayout 
      android:id="@+id/itemLayout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_marginLeft="0dp" 
      android:layout_marginRight="0dp" 
      android:layout_marginTop="4dp" 
      android:layout_marginBottom="4dp" 
       android:background="@drawable/bg_cards_ui" 
      > 

      <TextView 
       android:id="@+id/title" 
       android:layout_alignParentTop="true" 
       android:paddingBottom="4dip" 
      /> 

      <TextView 
       android:id="@+id/summary" 
       android:paddingBottom="4dip" 
       android:layout_below="@id/text" 
      /> 

      <TextView 
       android:id="@+id/siteName" 
       android:layout_below="@id/summary" 
      /> 

      <TextView 
       android:id="@+id/date" 
       android:layout_below="@id/summary" 
      /> 
     </RelativeLayout> 
    </FrameLayout> 

bg_c​​ard_ui.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="8dp" 
       android:left="8dp" 
       android:right="8dp" 
       android:top="8dp" 
      /> 
     </shape> 
    </item> 
    <item> 
     <selector> 
      <item android:state_pressed="true" android:drawable="@color/my_blue_color" /> 

      <item android:state_selected="true" android:state_pressed="false" android:drawable="@color/my_blue_color" /> 

      <item android:state_activated="true" android:state_selected="false" android:state_pressed="false" android:drawable="@color/my_blue_color" /> 

      <item android:state_selected="false" android:state_pressed="false" android:drawable="@android:color/transparent" /> 
     </selector> 
    </item> 
</layer-list> 

回答

1

看看這個:ListView - Highlight sub layout of item.我已經實現d正是我認爲你想要做的事情。

基本上,你需要讓選擇器在每個項目的「drawable」屬性中引用一個背景xml文件。您至少需要兩個背景xml文件,一個用於正常狀態,另一個用於按下,其顏色會發生變化。應該在那之後工作。