2010-07-01 4 views
10

J'essaie de désactiver la mise en surbrillance d'objets dans un GridView sous Android 2.2. Je trouve this other answer disant que je devrais définir le sélecteur sur un ColorDrawable transparent (android:listSelector="@android:color/transparent"), mais les vues de mon GridView sont toujours grisées quand je les sélectionne. Je n'utilise que GridView pour afficher des objets statiques dans une grille. Aucun de ces objets ne sera sélectionné. Serait-il préférable d'utiliser simplement une vue de base et de dessiner mes images manuellement?Désactiver complètement la mise en surbrillance d'Android GridView (désactiver la sélection)

+0

ceci https://stackoverflow.com/questions/18415844/disable-gridview-item-onclick-and-enable-only-on-child-view – sushmita

Répondre

22

Ok, il semble que j'ai trouvé la réponse.

Dans la définition de votre adaptateur pour le GridView, vous devrez remplacer les méthodes suivantes:

@Override 
public boolean areAllItemsEnabled() 
{ 
    return false; 
} 

@Override 
public boolean isEnabled(int position) 
{ 
    return false; 
} 

Cela entraînera tous les éléments dans votre grille pour être non sélectionnable, mais il obtiendra débarrasser de la surbrillance complètement.

+2

Si vous avez besoin que les enfants soient focalisables, essayez android: descendantFocusability = "afterDescendants" – eveliotc

+0

merci beaucoup ici, si vous avez des objets personnalisés dans votre liste (vues ..) et écraser leur onclicklistener, vous pouvez les sélectionner: =) parfait :) – cV2

+0

cela désactiver complètement la sélection de l'article – coderek

1

Juste Set v.setOnClickListener(null);

+0

Ceci est dans votre méthode Adapter.getView – jfleong

+0

I encore besoin d'être en mesure d'obtenir des événements de clic pour le GridView, mais je suis sûr que cela fonctionnerait dans d'autres situations. – Kenny

+0

cela va créer une exception – EyadMhanna

36

Pour garder les éléments cliquables ci-dessous, vous devez utiliser attr. dans votre GridView xml:

android: listSelector = "# 00000000"

Voir aussi: https://stackoverflow.com/a/2866074/928591

+2

Je pense que cela devrait être la réponse acceptée ... – Radu

+1

@Radu Cette solution a été explicitement mentionnée dans la question comme ne fonctionnant pas. – blahdiblah

+0

mieux utiliser android: listSelector = "@ null" –

0

Si vous voulez juste désactiver l'aspect visuel de la sélection, vous pouvez faire les éléments suivants: contrôle

gridview.getSelector().setAlpha(0); 
Questions connexes