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_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. Я реализовал d точно, что я думаю, что вы хотите сделать.

В принципе, для того, что у вас есть, вам нужно, чтобы селектор ссылался на фоновый XML-файл в свойство «drawable» каждого элемента. Вам понадобится по крайней мере два фоновых xml-файла, один для нормального состояния и один для нажатия, который требует изменения цвета. Должно работать после этого.