为listview设置点击效果

需求:点击条目时字体和颜色变化,抬起时恢复。


一  先进行字体颜色变化设置


1 先准备字体变化的drawable文件 selector_text_color,要注意的是 属性是color,不是drawable

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/colorWhite" android:state_pressed="true"/>
    <item android:color="@color/simple_blue"/>
</selector>

2 在子条目中使用

<TextView
        android:id="@+id/device_address"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_gravity="center"
        android:background="@drawable/selector_background"
        android:gravity="center"
        android:textColor="@drawable/selector_text_color"
        android:textSize="15dp" />

二 背景变化的设置

1 跟之前一样,首先准备点击背景变化的drawable文件 selector_background 。

因为背景变化需要涉及圆角和颜色的组合,所以还会用到自己绘制的drawable,当然如果只有颜色的变化可以直接写,不需要drawable

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

    <item android:drawable="@drawable/item_result1" android:state_pressed="true"/>
    <item android:drawable="@drawable/item_result"/>

</selector>

2 两种背景样式,分别是result和result1

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:color="@color/simple_blue"
        android:width="1dp"/>
    <corners android:bottomLeftRadius="20dp"
        android:bottomRightRadius="20dp"
        android:topLeftRadius="20dp"
        android:topRightRadius="20dp"/>
</shape>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:color="@color/simple_blue"
        android:width="1dp"/>
    <solid android:color="@color/simple_blue"/>
    <corners android:bottomLeftRadius="20dp"
        android:bottomRightRadius="20dp"
        android:topLeftRadius="20dp"
        android:topRightRadius="20dp"/>
</shape>

3 在子条目中使用1中的文件 可以看到字体和背景同时进行了设置

    <TextView
        android:id="@+id/device_address"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_gravity="center"
        android:background="@drawable/selector_background"
        android:gravity="center"
        android:textColor="@drawable/selector_text_color"
        android:textSize="15dp" />


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要为 ListView 添加 hover 选中效果,你可以使用 StateListDrawable 来定义 ListView 的背景。StateListDrawable 是一个 Drawable 对象,它可以根据 View 的状态来选择不同的背景。在这种情况下,我们需要定义两个不同状态下的背景:默认状态和选中状态。 首先,创建一个 XML 文件(例如名为 `listview_selector.xml`)来定义 StateListDrawable: ```xml <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_activated="true" android:drawable="@color/colorAccent" /> <item android:drawable="@android:color/transparent" /> </selector> ``` 在这个例子中,我们使用 `state_activated` 属性来表示选中状态,并将选中状态下的背景设置为 `@color/colorAccent`。默认状态下的背景设置为透明。 接下来,在你的布局文件中,为 ListView 设置这个 StateListDrawable 作为背景: ```xml <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/listview_selector" /> ``` 最后,在你的代码中,当你想要选中某个项时,使用 `setActivated(true)` 方法来设置该项的状态为选中: ```java ListView listView = findViewById(R.id.listview); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { view.setActivated(true); } }); ``` 这样,当你点击 ListView 中的项时,该项就会显示选中的效果。 注意:为了使 ListView 的子项可以响应点击事件,你还需要设置相应的适配器和项的点击监听器。以上代码仅展示了如何实现 hover 选中效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值