Je veux désactiver la surbrillance orange qui se produit lorsque vous touchez une ligne listView. Jusqu'à présent, dans mon XML, j'ai essayé ce qui suit:
Android:focusable="false"
Android:focusableInTouchMode="false"
Android:clickable="false"
Plus d'informations: Je souhaite qu'il n'y ait aucune différence lorsqu'un utilisateur touche l'écran de cet objet listView.
Ajoutez ceci à votre xml:
Android:listSelector="@Android:color/transparent"
Et pour le problème, cela peut fonctionner (je ne suis pas sûr et je ne sais pas s’il existe de meilleures solutions):
Vous pouvez appliquer un ColorStateList à votre TextView.
La réponse de RoflcoptrException devrait faire l'affaire, mais pour une raison quelconque, cela n'a pas fonctionné pour moi. Je publie donc la solution qui a fonctionné pour moi. J'espère que cela aidera quelqu'un
<ListView
Android:listSelector="@Android:color/transparent"
Android:cacheColorHint="@Android:color/transparent"
/>
L'effet de surbrillance orange est un style sur ListView. Cet article donne un bon aperçu de la façon de remplacer le style listView.
Pour l'essentiel, vous disposez d'un sélecteur qui spécifie différents éléments de style en fonction de l'état actuel.
voir ceci pour une solution courte et rapide https://stackoverflow.com/a/12242564/185022
De ListView: désactiver le surlignage de focus ,
lorsque vous définissez votre ListAdapter
, utilisez le code suivant
ListAdapter adapter = new SimpleCursorAdapter(MyList, Layout, c,
new String[] { "Name", "Score" }, to)
{
public boolean areAllItemsEnabled()
{
return false;
}
public boolean isEnabled(int position)
{
return false;
}
};
Cela remplacera la classe BaseAdapter
. Il annule également la bordure blanche entre les cellules.
ajoutez également ceci à votre XMl avec listselector..hope
<ListView
Android:cacheColorHint="@Android:color/transparent"
Android:listSelector="@Android:color/transparent"/>
Si vous utilisez ArrayAdapter
ou BaseAdapter
pour remplir les éléments de la liste. Override
la méthode isEnabled
et renvoyer false
.
@Override
public boolean isEnabled (int position) {
return false;
}
Après quelques recherches sur Google et des tests sur des appareils virtuels et réels, je constate que mon code ci-dessous fonctionne
ArrayAdapter<String> myList = new ArrayAdapter<String>(this, R.layout.list_item, strText) {
public boolean isEnabled(int position)
{
return false;
}
};
remarquez que j'ai omis la portion areAllItemsEnabled()
.
Rien ne m'aide que ceci:
transparent_drawable.xml
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="#00000000"/>
</shape>
layout.xml
:
Android:listSelector="@drawable/transparent_drawable"
dans du code
listView.setSelector(getResources().getDrawable(R.drawable.transparent));
et ajoutez une petite image transparente à un dossier pouvant être dessiné.
Comme: Transparent.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
<solid Android:color="#00000000"/>
</shape>
Vous devez seulement ajouter: Android:cacheColorHint="@Android:color/transparent"
Pour moi, Android:focusableInTouchMode="true"
est la voie à suivre. Android:listSelector="@Android:color/transparent"
est inutile. Notez que j'utilise une liste personnalisée avec un nombre d'objets dans chaque ligne.
Comme alternative:
listView.setSelector(Android.R.color.transparent);
ou
listView.setSelector(new StateListDrawable());
Il y a moyen rapide et facile de faire ceci: En méthode:
private void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
//TODO
((ListView)sender).SelectedItem = null;
}
J'espère que ça va aider;)
vous pouvez simplement obtenir la pos
que vous obtenez de la onItemClick
.__ et faire:
listView.setItemChecked(pos, false);
c'est la meilleure façon que je connaisse
Si vous souhaitez désactiver la surbrillance d'un élément d'affichage de liste unique tout en maintenant la cellule activée, définissez la couleur d'arrière-plan de cette cellule pour désactiver la surbrillance.
Par exemple, dans votre disposition de cellule, définissez Android:background="@color/white"