2010-07-01 16 views
10

Sto tentando di disabilitare l'evidenziazione degli oggetti in un GridView in Android 2.2.Disattiva completamente l'evidenziazione di Android GridView (disabilita la selezione)

ho trovato this other answer dicendo che avrei dovuto impostare il selettore su un ColorDrawable trasparente (android:listSelector="@android:color/transparent"), ma il punto di vista del mio GridView sono ancora in grigio quando li seleziono.

Sto solo usando il GridView per visualizzare oggetti statici in una griglia. Nessuno di questi oggetti sarà selezionato. Sarebbe meglio usare solo una vista di base e disegnare manualmente le mie immagini?

+0

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

risposta

22

Ok, sembra che ho trovato la risposta.

Nella definizione del vostro Adattatore per il GridView, si dovrà sostituire i seguenti metodi:

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

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

questo farà sì che tutti gli elementi nella vostra griglia per essere non selezionabile, ma otterrà liberare completamente il punto culminante.

+2

Se hai bisogno di mettere a fuoco i child prova android: descendantFocusability = "afterDescendants" – eveliotc

+0

grazie molto qui, se hai oggetti personalizzati nel tuo elenco (viste ...) e sovrascrivi il loro onclicklistener, puoi selezionarli: =) perfetto :) – cV2

+0

questa opzione di disabilitazione del tutto insieme – coderek

1

Proprio Set v.setOnClickListener(null);

+0

Questo è nel tuo metodo Adapter.getView – jfleong

+0

I doveva ancora essere in grado di ottenere eventi click per GridView, ma sono sicuro che funzionerebbe in altre situazioni. – Kenny

+0

creerà un'eccezione – EyadMhanna

36

Per mantenere gli elementi cliccabili si dovrebbe usare sotto attr. in xml GridView:

android: listSelector = "# 00000000"

Vedi anche: https://stackoverflow.com/a/2866074/928591

+2

Penso che questa dovrebbe essere la risposta accettata ... – Radu

+1

@Radu Questa soluzione è stata esplicitamente citata nella domanda come non funzionante. – blahdiblah

+0

usa meglio android: listSelector = "@ null" –

0

Se si desidera solo per disabilitare l'aspetto visivo della selezione, si può fare il seguente:

gridview.getSelector().setAlpha(0); 
Problemi correlati