it-swarm.com.de

Android: Hervorhebung von listView-Klick deaktivieren

Ich möchte die orangefarbene Markierung deaktivieren, die beim Berühren einer listView-Zeile auftritt. In meiner XML habe ich bisher folgendes versucht:

Android:focusable="false"
Android:focusableInTouchMode="false"
Android:clickable="false"

Weitere Informationen: Ich möchte, dass es keinen Unterschied gibt, wenn ein Benutzer den Bildschirm dieses listView-Objekts berührt.

287
John Moffitt

Fügen Sie dies zu Ihrer XML hinzu:

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

Und für das Problem kann dies funktionieren (Ich bin nicht sicher und weiß nicht, ob es bessere Lösungen gibt):

Sie können eine ColorStateList auf Ihre TextView anwenden.

653

Die Antwort von RoflcoptrException sollte den Trick tun, aber aus irgendeinem Grund hat es für mich nicht funktioniert. Also poste ich die Lösung, die für mich funktioniert hat, hoffe es hilft jemandem

<ListView 
Android:listSelector="@Android:color/transparent" 
Android:cacheColorHint="@Android:color/transparent"
/>
187
Mushtaq Jameel

Der orange hervorgehobene Effekt ist ein style in der ListView. Dieser Artikel gibt einen guten Überblick darüber, wie der listView-Stil überschrieben wird.

Im Wesentlichen haben Sie eine Auswahl, die verschiedene Stilelemente auf der Grundlage des aktuellen Status angibt. 

hier finden Sie eine kurze und schnelle Lösung https://stackoverflow.com/a/12242564/185022

101
Cheryl Simon

Von ListView: Fokusmarkierung deaktivieren ,

wenn Sie ListAdapter einstellen, verwenden Sie den folgenden Code

ListAdapter adapter = new SimpleCursorAdapter(MyList, Layout, c, 
                new String[] { "Name", "Score" }, to) 
{ 
    public boolean areAllItemsEnabled() 
    { 
        return false; 
    } 
    public boolean isEnabled(int position) 
    { 
        return false; 
    } 
}; 

Dadurch wird die BaseAdapter-Klasse überschrieben. Der weiße Rand zwischen den Zellen wird ebenfalls aufgehoben.

62
emdog4

füge dies auch zu ur XMl zusammen mit listselector hinzu

<ListView
Android:cacheColorHint="@Android:color/transparent"
Android:listSelector="@Android:color/transparent"/> 
38
sheetal

Wenn Sie ArrayAdapter oder BaseAdapter verwenden, um die Listenelemente aufzufüllen. Override die isEnabled-Methode und gibt false zurück.

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

Nach ein paar Google-Tests und Tests auf virtuellen und realen Geräten stelle ich fest, dass mein Code unten funktioniert:

ArrayAdapter<String> myList = new ArrayAdapter<String>(this, R.layout.list_item, strText) {
    public boolean isEnabled(int position) 
    { 
            return false; 
    } 
};

beachten Sie, dass ich den areAllItemsEnabled()-Teil weggelassen habe.

13
aerobrain

Nichts hilft mir außer diesem:

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"
11

in Code

listView.setSelector(getResources().getDrawable(R.drawable.transparent));

und fügen Sie ein kleines transparentes Bild zu einem Zeichenordner hinzu. 

Wie: Transparent.xml

<?xml version="1.0" encoding="utf-8"?>    
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <solid Android:color="#00000000"/>
</shape>

Sie müssen nur Folgendes hinzufügen: Android:cacheColorHint="@Android:color/transparent"

5
Prakash

Für mich ist Android:focusableInTouchMode="true" der Weg zu gehen. Android:listSelector="@Android:color/transparent" nützt nichts. Beachten Sie, dass ich eine benutzerdefinierte Listenansicht mit einer Reihe von Objekten in jeder Zeile verwende.

5
erdomester

Als Alternative:

listView.setSelector(Android.R.color.transparent);

oder

listView.setSelector(new StateListDrawable());
4
Natali

Es gibt einen schnellen und einfachen Weg, dies zu tun: In Methode:

private void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
    //TODO
    ((ListView)sender).SelectedItem = null;
}

Hoffe es wird helfen;)

1
FeldonDragon

sie können nur die pos erhalten, die Sie von der onItemClick.__ erhalten.

listView.setItemChecked(pos, false);

das ist der beste Weg, den ich kenne 

0
Chief Madog

Wenn Sie die Hervorhebung für ein einzelnes Listenansichtselement deaktivieren, die Zelle jedoch aktiviert lassen möchten, legen Sie die Hintergrundfarbe für diese Zelle fest, um die Hervorhebung zu deaktivieren.

Legen Sie beispielsweise in Ihrem Zellenlayout Android:background="@color/white" fest.

0
GLee