Penso che il modo più semplice è quello di creare due selettori che sono usati come le risorse di fondo, con il colore trasparente in modalità state_selected: (res/drawable/alterselector1.xm l :)
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@drawable/transparent" />
<item android:state_pressed="true"
android:drawable="@drawable/transparent" />
<item android:state_selected="false"
android:drawable="@drawable/altercolor1"/>
</selector>
(res/drawable/alterselector2.xml :)
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@drawable/transparent" />
<item android:state_pressed="true"
android:drawable="@drawable/transparent" />
<item android:state_selected="false"
android:drawable="@drawable/altercolor2"/>
</selector>
(res/valori/colors.xml :)
<resources>
<drawable name="transparent">#00ffffff</drawable>
<drawable name="altercolor1">#ffffffff</drawable>
<drawable name="altercolor2">#ff000000</drawable>
</resources>
Poi si impostano gli sfondi in il metodo getView dell'adattatore con il metodo setBackgroundResource:
if (position % 2 == 0){
reusableView.setBackgroundResource(R.drawable.alterselector1);
} else {
reusableView.setBackgroundResource(R.drawable.alterselector2);
}
Ora quando selezioni una riga, lo sfondo non nasconde il selettore originale dietro.
Questo funziona parzialmente - Posso vedere l'evidenziazione quando l'oggetto è focalizzato usando il pulsante di scorrimento, ma non riesco a farlo funzionare quando si preme un oggetto. Ho provato tutti gli stati elencati qui: http://developer.android.com/guide/topics/resources/color-list-resource.html, ma non ha funzionato ... – zorglub76
Ho modificato i selettori per gestire anche lo stato premuto . Sembra che quando si preme l'elemento, perde lo stato selezionato. Quindi devi definire anche lo stato premuto per essere trasparente. Presta attenzione per l'ordine, perché il selettore utilizzerà il primo elemento che corrisponde allo stato corrente, quindi l'elemento state_selected = "false" dovrebbe essere in fondo. – Utyi
Funziona! Quasi un anno da quando ho fatto questa domanda !! Grazie! – zorglub76