使用<shape>

时间:2015-05-25 07:28:07

标签: android listview android-listview

使用ListView向用户显示一些数据时,默认情况下,ListView项目有一个&#34; Clicked&#34;用户点击它们时的动画[如图所示] 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项目更改为我想要的形状和颜色,但是&#34; Clicked&#34;动画已经消失[我正在点击&#34;星期三和#34;在下图中] enter image description here

我一直试图解决这个问题很长一段时间但没有成功: 如何检索&#34; Clicked&#34;动画同时保持项目的设计?

1 个答案:

答案 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元素相关。