Ich möchte die orangefarbene Markierung deaktivieren, die beim Berühren einer listView-Zeile auftritt. Bisher habe ich in meiner XML 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.
android
android-listview
highlighting
John Moffitt
quelle
quelle
Fragment
für die Liste. Das XML-Layout enthält einLinearLayout
und mehrereTextView
Elemente. Wo soll ich die Zeilenhervorhebung deaktivieren?listView.setSelector(android.R.color.transparent);
Die Antwort von RoflcoptrException sollte den Trick machen, aber aus irgendeinem Grund hat es bei mir nicht funktioniert. Ich poste also die Lösung, die bei mir funktioniert hat, hoffe, sie hilft jemandem
quelle
Der orangefarbene Hervorhebungseffekt ist ein Stil in der ListView. Dieser Artikel bietet einen guten Überblick über das Überschreiben des listView-Stils.
Im Wesentlichen haben Sie einen Selektor, der basierend auf dem aktuellen Status verschiedene Stilelemente angibt.
Eine kurze und schnelle Lösung finden Sie unter https://stackoverflow.com/a/12242564/185022
quelle
listSelector
sollte es sein.In ListView: Fokusmarkierung deaktivieren ,
Wenn Sie Ihre
ListAdapter
Verwendung einstellen, geben Sie den folgenden Code einDadurch wird die
BaseAdapter
Klasse überschrieben . Außerdem wird der weiße Rand zwischen den Zellen aufgehoben.quelle
isEnabled
zum Deaktivieren eines Elements ist nicht der Weg, um es zu deaktivieren! Die Dokumentation besagt, dassisEnabled
bestimmt werden soll, ob ein Element ein Trennzeichen ist.füge dies auch zu ur XMl zusammen mit listselector hinzu. Ich hoffe, es wird funktionieren
quelle
Wenn Sie die Listenelemente verwenden
ArrayAdapter
oderBaseAdapter
füllen.Override
dieisEnabled
Methode und zurückfalse
.quelle
Nach ein paar "google" und Tests auf virtuellen und realen Geräten stelle ich fest, dass mein unten stehender Code funktioniert:
Beachten Sie, dass ich den
areAllItemsEnabled()
Teil weggelassen habe .quelle
Nichts hilft mir außer diesem:
transparent_drawable.xml
::layout.xml
::quelle
in Code
und fügen Sie dem zeichnbaren Ordner ein kleines transparentes Bild hinzu.
Wie: transparent.xml
quelle
Für mich
android:focusableInTouchMode="true"
ist der Weg zu gehen.android:listSelector="@android:color/transparent"
ist nutzlos. Beachten Sie, dass ich eine benutzerdefinierte Listenansicht mit einer Anzahl von Objekten in jeder Zeile verwende.quelle
Sie müssen nur hinzufügen:
android:cacheColorHint="@android:color/transparent"
quelle
Als Alternative:
oder
quelle
Es gibt eine schnelle und einfache Möglichkeit, dies zu tun: In Methode:
Hoffe es wird helfen;)
quelle
Wenn Sie die Hervorhebung für ein einzelnes Listenansichtselement deaktivieren möchten, 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 fest
android:background="@color/white"
quelle
Sie können einfach das bekommen
pos
, was Sie von der bekommenonItemClick
und tun:Das ist der beste Weg, den ich kenne
quelle