今天写代码时,需要设置一个TextView 的点击效果,press 状态和normal 状态两个icon,同时,点击区域背景在press状态下也不同。实现时将TextView 放在RelativeLayout 中 ,RelativeLayout 作点击区域,设置点击的背景效果,TextView 在点击时显示不同的icon图片。
布局文件如下
<RelativeLayout
android:id="@+id/dele_layout"
android:layout_width="math_parent"
android:layout_height="48dp"
android:background="@drawable/setting_delete_selector"
>
<TextView
android:id="@+id/delete_move_notice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/webview_move_setting_close"
/>
</RelativeLayout>
点击区域背景setting_delete_selector.xml 文件如下
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/setting_move_webview_bg"></item>
<item android:drawable="@color/setting_move_action_setting__close_press_bg" android:state_pressed="true"></item>
TextView的selector 文件
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/pop_ico_delete_normal"></item>
<item android:drawable="@drawable/pop_ico_delete_press" android:state_pressed="true"></item>
其中 color.xml 中定义了 selector.xml 中使用的颜色值。这里就不再贴出。
这样的代码,打死都没有效果,没有效果,没有效果。重要事情说三遍!!!
费劲千辛万苦,查找所有代码,重写demo测试,最后查找出来原因竟然是
press状态要放在selector 的第一行
将两个文件修改如下:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/pop_ico_delete_press" android:state_pressed="true"></item>
<item android:drawable="@drawable/pop_ico_delete_normal"></item>
</selector>
这样,效果就有了~
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-05 14:51:57