android - 单击的动画在使用 <shape> 设计后消失了

标签 android listview android-listview

在使用 ListView 向用户显示一些数据时,默认情况下,当用户单击 ListView 项目时,它们具有“已单击”动画 [如图所示] enter image description here

现在,我想设计 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 项目更改为我想要的形状和颜色,但是“单击”动画消失了 [我正在单击下图中的“星期三”] enter image description here

我已经尝试解决这个问题很长时间了,但没有成功:\ 如何在保持项目设计的同时检索“点击”动画?

最佳答案

我的问题的解决方案是在@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/

相关文章:

java - android java A* 需要寻路帮助

android - 谷歌加登录与谷歌分析

android - 在android中使用带有listview的contextmenu

android - 如何在 ArrayAdapter 的 getView 方法中更新 View ?

android - 获取不可见 ListItem 的位置

android - 通过拖动重新排序 ListView 的元素

android.view.ViewRootImpl$CalledFromWrongThreadException,OkHttp

android - 如何检查 EditText 在单击提交按钮时是否仍然有错误消息

Android,如何传递view和viewgroup参数

java - Android ListView OnClickListener