使用android:choiceMode="singleChoice
“声明ListView。
要突出显示当前选择的项目,我将选择器声明为列表项的背景可绘制(或列表视图的listSelector),其中包含行
<item android:state_activated="true" android:drawable="@color/chosen" />`
使用Android 3.0+时效果很好,因为View的激活的属性在SDK 11之前才出现。
有没有办法用Android 2突出显示所选项目?我希望有一个简单而“自然”的解决方案(没有像listView.getChildAt(position).setBackgroundColor(...)
这样的肮脏技巧),因为choiceMode
功能从一开始就存在,在没有突出显示的情况下完全无法使用。
您将通过提供相关答案来结束我的一天。
答案 0 :(得分:0)
在其**onItemClick**
监听器中,您可以像这样使用**TransitionDrawable**
。我将此代码放在 getView()中,highlightPosition是项目位置。您可以根据需要进行修改, reImage
是充气机xml的相对布局。我已将此代码放在getView中。您可以尝试将其放入onItemClick ..此代码突出显示所选项目2 3秒,然后颜色从蓝色变为白色: -
if(highlightPosition == position){
viewHolderThubnail.relImage.setBackgroundResource(R.drawable.translate);
TransitionDrawable transition = (TransitionDrawable) viewHolderThubnail.relImage.getBackground();
transition.startTransition(1000);
highlightPosition =-1;
}else{
viewHolderThubnail.relImage.setBackgroundResource(R.color.white);
}
<强> translate.xml 强>
<?xml version="1.0" encoding="UTF-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The drawables used here can be solid colors, gradients, shapes, images, etc. -->
<item android:drawable="@drawable/new_state" />
<item android:drawable="@drawable/original_state" />
</transition>
<强> new_state.xml 强>
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#92BCE7"/>
</shape>
<强> original_state.xml 强>
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FFFFFF"/>
</shape>