使用ListView向用户显示一些数据时,默认情况下,ListView项目有一个" Clicked"用户点击它们时的动画[如图所示]
现在,我想在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项目更改为我想要的形状和颜色,但是&#34; Clicked&#34;动画已经消失[我正在点击&#34;星期三和#34;在下图中]
我一直试图解决这个问题很长一段时间但没有成功: 如何检索&#34; Clicked&#34;动画同时保持项目的设计?
答案 0 :(得分:1)
通过在@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项目的布局,“Clicked”动画将来自死者:)
注意:此解决方案不仅与ListView项目相关,而且与您想要创建“推送”动画的任何GUI元素相关。