Frage

Ich habe eine benutzerdefinierte ImageView, die durch Anrufe View.scrollBy() in einem GestureDetector Grund Scrollen unterstützt. Ich wollte ein Feedback auf das Erreichen des Scrollens Grenzen hinzufügen, damit ich mit aktiviertem Verblassen:

setVerticalFadingEdgeEnabled(true);
setHorizontalFadingEdgeEnabled(true);

aber die Schwund Werke wie ich erwartet hatte nur auf oberen und linken Rand, während unten und Richtigen nicht verblassen tun. Ich bin sicher, dass diese Kanten nicht außerhalb des Bildschirms sind, weil der Blick auf fill_parent in Höhe und Breite festgelegt ist. Also, was ist los?


EDIT: So kann nur vertikal / horizontal bestätigt Verblassen Kanten, die nur oben / links Kanten gezogen bekommen. Jetzt versuche ich, View.java (6870 ein auf) ...

War es hilfreich?

Lösung

Es scheint, dass das Problem in getBottomFadingEdgeStrength() und getRightFadingEdgeStrength(), oder besser gesagt, in der Tatsache, dass ich sie nicht mit meiner benutzerdefinierten Ansicht Arbeit habe außer Kraft setzen.

Diese geschützten Methoden sagen Ansicht der draw() wenn die Überblendungen zu ziehen (und wie stark - sehen, was ein ScrollView tut, wenn Sie in der Nähe der Scroll-Grenze bekommen).

Für oberen und linken Rand ist es einfach, weil die Grenze 0 in beiden Fällen und die Standardimplementierung Arbeiten (in seiner Ein- / Aus-Weise), sondern auch für die beiden anderen muss ich die Methoden außer Kraft setzen zu berücksichtigen, meine eigene Rolle im Grenzen (in meinem Fall, die ziehbar Dimensionen).

Andere Tipps

A wissen, das ist alt, aber eine schnelle Arbeit um im Vergleich zu zwingenden Methoden Steigungen und relativ Layout in Ihrem XML zu verwenden. Nachstehend finden Sie eine abstrahierte Version finden, können Sie es nicht kopieren und einfügen, aber es sollte die Nachricht weiterzuleiten. Leider habe ich getippt sie alle aus von Hand.

<!-- object with fading edges in layout -->
<RelativeLayout>
    <ImageView>
    <LinearLayout background="gradient_left" layout_alignParentStart="true">
    <LinearLayout background="gradient_right" layout_alignParentEnd="true">
</RelativeLayout>


<!-- gradient left xml in drawable-->
<shape>
    <gradient startColor="#000" endColor:"@android:color/transparent" angle="0"
</shape>


<!-- gradient right xml in drawable -->
<shape>
   <gradient startColor="#000" endColor:"@android:color/transparent" angle="180"
</shape>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top