2011-07-16 7 views
0

J'ai une vue de liste où je voudrais empêcher la surbrillance sur la sélection. La couleur d'arrière-plan est définie comme semi-transparente sur la disposition de ligne de la vue liste. Plus je le rend transparent, plus il est mis en évidence dans la couleur orange par défaut d'Android.Empêcher la surbrillance dans la vue de liste

est ici la mise en page:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    style="@style/CodeFont" 
    android:id="@+id/text1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textSize="35sp" 
    android:gravity="center_vertical" 
    android:checkMark="?android:attr/listChoiceIndicatorSingle" 
    android:paddingLeft="20dip" 
    android:paddingTop="10dip" 
    android:paddingBottom="10dip" 
    android:cacheColorHint="#00000000" 
    android:background="#AAEBD5A8" 

/> 

Si je supprime l'arrière-plan et définir la couleur comme celui-ci,

private void makeListDefault(ListView listView) { 
    int childCount = listView.getChildCount(); 
    int i = 0; 
    for (i = 0; i < childCount; i++) { 
     View view = listView.getChildAt(i); 
     view.setBackgroundResource(R.drawable.hilight_no_gradient_correct_drawable); 
    } 
} 

Il est n'affecte pas la couleur d'aucune façon. Le hilight_no_gradient_correct_drawable

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient android:startColor="#FF98FB98" android:endColor="#FF98FB98" 
     android:angle="90" /> 
     <!-- 98FB98 is a shade of green --> 
</shape> 

Des idées? J'ai aussi essayé avec un sélecteur, mais rien ne semble affecter la couleur.

Répondre

0

Avez-vous essayé avec une couleur personnalisée pour l'arrière-plan d'un ListView?

<ListView 
    android:id="@+id/conversations" 
    android:scrollbars="vertical" 
    android:layout_width="fill_parent" 
    android:cacheColorHint="#000000" 
    android:visibility="visible" 
    android:listSelector="@color/backgroundlistcell" 
    android:dividerHeight="0dip" 
    android:layout_height="wrap_content" 
    android:layout_weight="1"> 
</ListView> 

être au courant listSelector = "...."

backgroundlistcell.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:state_focused="false" 
    android:state_pressed="false" 
    android:state_selected="false" 
    android:state_enabled="true" 
    android:drawable="@drawable/listcell_enabled" /> 
<item 
    android:state_focused="true" 
    android:drawable="@null" /> 
<item 
    android:state_selected="true" 
    android:drawable="@null" /> 
<item 
    android:state_pressed="true" 
    android:drawable="@drawable/listcell_pressed" /> 
</selector> 

Peut-être que vous aurez besoin de changer la valeur d'attribut drawable mais cela devrait fonctionner.

+0

Merci, je l'ai essayé, y compris avec le sélecteur comme android: listSelector = "@ background/backgroundlistcell" de la mise en page ListActivity et la mise en page, mais il semblait rendre les éléments complètement transparents les couleurs que j'ai utilisées. Il est possible qu'il y ait quelque chose dans mon code qui affecte ceci, puisque je fais la mise en évidence etc. à partir de là. Mais, je ne pouvais pas faire fonctionner ça. –

1

Vous pouvez définir listSelector aussi transparent que:

android:listSelector="@android:color/transparent" 

Il empêchera la couleur par défaut pour la surbrillance/état sélectionné.

Questions connexes