使用pre-Honeycomb突出显示所选的ListView项目?

时间:2013-12-09 04:57:27

标签: android android-listview

使用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功能从一开始就存在,在没有突出显示的情况下完全无法使用。

您将通过提供相关答案来结束我的一天。

1 个答案:

答案 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>