1

카드 모양의 UI를 구현 한 ListView이 있습니다. ListView의 항목이 "selected"또는 "pressed"상태 인 경우 항목 주위에 흰색 경계가 있습니다. 나는 청색을 가지고 전체보기를 좋아하지만, 그 달성하는 방법을 잘하지 않을 :카드 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_card_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. 구현했습니다. 정확히 당신이 찾고있는 것 같아요.

기본적으로 선택자는 각 항목의 "drawable"속성에 background xml 파일을 참조해야합니다. 배경색 xml 파일이 두 개 이상 있어야합니다. 하나는 정상 상태이고, 다른 하나는 누른 색으로 원하는 색으로 변경됩니다. 그 후에 작업해야합니다.