在使用 ListView 向用户显示一些数据时,默认情况下,当用户单击 ListView 项目时,它们具有“已单击”动画 [如图所示]
现在,我想设计 ListView 中的项目并添加 android:background="@drawable/border"
到他们的 XML 布局定义
当 drawable/border.xml 被定义为:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="1.5dp" android:color="#000000" />
<solid android:color="#ffe5d226"/>
<padding
android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="0dp" />
<corners android:radius="4dp"/>
</shape>
执行此操作后,ListView 项目更改为我想要的形状和颜色,但是“单击”动画消失了 [我正在单击下图中的“星期三”]
我已经尝试解决这个问题很长时间了,但没有成功:\ 如何在保持项目设计的同时检索“点击”动画?
最佳答案
我的问题的解决方案是在@drawable 文件夹中创建:
1) 名为 not_clicked_layout.xml 的 ListView 项的“未单击”背景布局 喜欢:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="1.5dp" android:color="#000000" />
<solid android:color="@color/green"/>
<padding
android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="0dp" />
<corners android:radius="4dp"/>
</shape>
2) ListView 项目的“点击”背景布局,即用户按下它时的样子。命名为 clicked_layout.xml 喜欢:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/gold"/>
<stroke android:width="1.5dp" android:color="#000000" />
<padding
android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="0dp" />
<corners android:radius="4dp"/>
</shape>
3) 最后也是最重要的布局是通过创建名为 list_selector.xml 的最后一个布局来坚持前两个步骤的布局:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="false"
android:drawable="@drawable/not_clicked_layout" />
<item android:state_pressed="true"
android:drawable="@drawable/clicked_layout" />
</selector>
上面的布局声明了“not_clicked_layout.xml”在项目未被按下时显示,“clicked_layout”在项目被按下时显示。
4) 剩下要做的就是添加:
android:background="@drawable/list_selector"
你的 ListView 项目的布局和“点击”动画将从死里复活:)
注意:此解决方案不仅与 ListView 项目相关,而且与您想要创建“推送”动画的任何 GUI 元素相关。
关于android - 单击的动画在使用 <shape> 设计后消失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30433208/