Frage

Ich verwende eine Galerieansicht, wo der Blick auf jedes Element entspricht, ist nicht trivial und besteht aus Text sowie mehrere Schaltflächen.

Wenn ich auf die Galerie-Ansicht (irgendwo nicht auf eine der Schaltflächen) ziehen, um die ziehbar Zustandsänderungen gepresst und erscheint die Schaltfläche als ob alle Tasten zur Zeit gedrückt werden. Darüber hinaus geschieht das gleiche Verhalten für den ausgewählten Zustand (zum Beispiel der gesamte Text des Kindes Textviews ändert seine Farbe).

Ich versuche, dieses Verhalten zu verhindern und das androide gefunden: duplicateParentState xml-Attribut sowie die setDuplicateParentStateEnabled Eigenschaft. Dies scheint, wie es sollte erreichen, was ich zu tun versucht, aber es scheint keine Wirkung zu haben.

Irgendwelche Ideen?

War es hilfreich?

Lösung 2

Nicht sicher, wo die duplicateParentState Eigenschaft ins Spiel kommt, sondern durch die Quelle zeigt brechen, dass es nie in Betracht für die ausgewählten und gedrückt Zustände genommen wird. Ich würde auf eine benutzerdefinierte Ansicht Klasse erstellen und das Überschreiben der dispatchSetSelected und dispatchSetPressed Methoden.

Andere Tipps

Vielleicht ein bisschen auf der späten Seite, aber selbst laufen zu haben in dieses Problem vor kurzem habe ich eine Lösung.

dispatchSetSelected und dispatchSetPressed nicht wirklich hier helfen, da die Methoden, die Sie tatsächlich überschreiben müssen privat sind innerhalb Gallery.

Die Lösung ist ein zusätzliches Layout hinzuzufügen (verwenden ich eine Unterklasse von Linearlayout) um das Kind Ansicht, die überschreibt setPressed (boolean) und einfach ignoriert. Dies verhindert, dass die Galerie von seinem gedrückten Zustand auf die Kinder zu zwingen, während sie noch die Kinder, so dass direkt aktiviert werden, und nicht nach oben Ereignisse aus propagiert gestoppt wird.

Wenn Sie aus der Galerie zu erweitern passieren Ihre eigene Version zu erstellen, können Sie einfach tun:

  @Override
  public boolean onDown(MotionEvent e) {
    // Ignore onDown events in order to avoid having every child's state set to 'pressed'
    return true;
  }

Dies ermöglicht noch die Kinder der benutzerdefinierten Galerie ordnungsgemäß erhalten Ereignisse klicken, und swiping / schleudert Arbeiten wie vorgesehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top