如何在ListView中突出显示按下的项目?

时间:2017-01-30 12:44:16

标签: android android-layout listview

我在下面使用此代码,但它无法正常工作:如果我选择了一个项目,背景就会改变。但是如果我只关注项目而不选择它,背景也会发生变化。为什么?

添加到我的列表视图中:

android:listSelector="@drawable/bg_key"

@绘制/ bg_key

<?xml version="1.0" encoding="utf-8"?>
<selector
    android:id="@+id/myselector"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_activated="false"
        android:drawable="@color/activated_color" />

</selector>

color.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="activated_color">#1d1d1d</color>
</resources>

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容突出显示/为列表项提供连锁效果:

在drawable中创建选择器item_ripple.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">
        <shape>
            <solid android:color="@color/activated_color"></solid>
        </shape>
    </item>

    <item >
        <shape>
            <solid android:color="@android:color/transparent"></solid>
        </shape>
    </item>

</selector>

在drawable-v21中创建选择器item_ripple.xml

<?xml version="1.0" encoding="utf-8"?>
<ripple
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/activated_color">

    <item
        android:id="@android:id/mask"
        android:drawable="@android:color/white" />
</ripple>

您需要将这些选择器添加为项目布局的背景:

android:background="@drawable/item_ripple"

答案 1 :(得分:0)

您可以在选择器文件中使用按下状态

<强> /drawable/list_selector.xml

{
  "Posts" : {
    "dEXaVLDOSPfJa3zTyUNqAEtVuMR2" : {
      "-KbHUnL-RveUQa3MPSWp" : {
        "latitud" : "21.111401000574",
        "longitud" : "-89.6112191677094",
        "text" : "Fiesta en la Anahuac!!! ",
        "timestamp" : "1485295269.30773",
        "ubicacionN" : "Universidad Anáhuac Mayab"
      },
      "-KbI1azr6uFel-5uTZOD" : {
        "latitud" : "Optional(21.018988764483463)",
        "longitud" : "Optional(-89.614319546492695)",
        "text" : "Hola chicos",
        "timestamp" : "1485304393.77929",
        "ubicacionN" : "Calle 53-A 341"
      },
      "-KbNQWxjQhc0Ce_ZQbq9" : {
        "latitud" : "Optional(21.019219877217914)",
        "longitud" : "Optional(-89.614173537203683)",
        "text" : "Hola",
        "timestamp" : "1485394812.83039",
        "ubicacionN" : "Calle 53 341"
      }
    },
    "mt0fzirhMhazIcy90MRWuRpTfmE2" : {
      "-KbQOWfUnzY1JiS61J6-" : {
        "latitud" : "Optional(21.111502615883129)",
        "longitud" : "Optional(-89.611767497121221)",
        "text" : "Hola chicos!",
        "timestamp" : "1485444619.10931",
        "ubicacionN" : "Carretera Mérida-Progreso 96"
      }
    }
  },
  "follower" : {
    "dEXaVLDOSPfJa3zTyUNqAEtVuMR2" : {
      "mt0fzirhMhazIcy90MRWuRpTfmE2" : true
    },
    "mt0fzirhMhazIcy90MRWuRpTfmE2" : {
      "dEXaVLDOSPfJa3zTyUNqAEtVuMR2" : true
    }
  },
  "following" : {
    "dEXaVLDOSPfJa3zTyUNqAEtVuMR2" : {
      "mt0fzirhMhazIcy90MRWuRpTfmE2" : true
    },
    "mt0fzirhMhazIcy90MRWuRpTfmE2" : {
      "dEXaVLDOSPfJa3zTyUNqAEtVuMR2" : true
    }
  },
  "handles" : {
    "jcadmin" : "mt0fzirhMhazIcy90MRWuRpTfmE2",
    "jcbest" : "dEXaVLDOSPfJa3zTyUNqAEtVuMR2"
  },
  "user_profiles" : {
    "dEXaVLDOSPfJa3zTyUNqAEtVuMR2" : {
      "about" : "Hola Mundo",
      "handle" : "jcbest",
      "name" : "Juan Carlos Estevez Rodriguez",
      "profile_pic" : "https://firebasestorage.googleapis.com/v0/b/jalo-267da.appspot.com/o/user_profiles%2FOptional(%22dEXaVLDOSPfJa3zTyUNqAEtVuMR2%22)%2Fprofile_pic?alt=media&token=bfc3c516-7849-472c-b7cd-9668965a5dbe"
    },
    "mt0fzirhMhazIcy90MRWuRpTfmE2" : {
      "about" : "Hola chicos",
      "handle" : "jcadmin",
      "name" : "Juan Carlos",
      "profile_pic" : "https://firebasestorage.googleapis.com/v0/b/jalo-267da.appspot.com/o/user_profiles%2FOptional(%22mt0fzirhMhazIcy90MRWuRpTfmE2%22)%2Fprofile_pic?alt=media&token=b741b6c1-0bc5-446d-a1e5-159b21e770d2"
    }
  }
}

然后在listView中设置以下属性

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@android:color/holo_red_light" android:state_pressed="true"/>

</selector>