2013-12-09 58 views
1

一个ListView声明与android:choiceMode="singleChoice”。突出显示与蜂窝前预选的ListView项目?

要突出当前选择的项目,我宣布选择作为背景绘制一个列表项(或listSelector为ListView),其中包括线

<item android:state_activated="true" android:drawable="@color/chosen" />` 

它的伟大工程。 ..与Android 3.0+,因为查看激活财产出现直到SDK 11

有没有办法来突出所选项目与Android 2?我想到一个简单的和“自然”的解决方案(没有搞鬼升ike listView.getChildAt(position).setBackgroundColor(...)),因为choiceMode功能从一开始就存在,完全无法使用而没有突出显示。

通过提供相关答案,您将真正做到我的一天。

回答

0

在其**onItemClick**听众,你可以使用这样的**TransitionDrawable**。我把这个代码放在getView()和highlightPosition是项目的位置。你可以根据你的需要修改它,并且reImage是充气机xml上的相对布局。我已经把这段代码放在getView中。您可以尝试把它放在onItemClick..This代码突出显示所选择的项目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> 
+0

说实话,我不太了解你的代码。我想更改特定项目的背景,而不是整个列表。如果我决定避免选择器可绘制,那么主要问题是获取项视图(特别是可以是ViewGroup),因为getChildAt()不是100%的证明。你的代码并不建议这样做。 – cyanide

+0

我的代码更改所选项目的背景。您可以查看转换可绘制 –

+0

TransitionDrawable不会自动选择所选项目,而您提供的代码部分不涉及OnItemClick参数(至少我看不到任何)。你能否提供更详细的代码? – cyanide