Question

J'ai fait un ImageView personnalisé qui prend en charge le défilement de base au moyen d'appels à View.scrollBy() dans un GestureDetector. Je voulais ajouter des commentaires sur l'atteinte des limites de défilement si j'ai activé la décoloration avec:

setVerticalFadingEdgeEnabled(true);
setHorizontalFadingEdgeEnabled(true);

mais les travaux de fading comme je prévus que dans les bords supérieur et gauche, tandis que ceux du bas et de droite ne se fanent pas. Je suis sûr que les bords ne sont pas hors de l'écran car la vue est réglé sur fill_parent en hauteur et en largeur. Alors qu'est-ce qui ne va pas?


EDIT: permet seulement des bords horizontaux / verticaux fading confirment que seuls haut / bords gauche se tirer. Maintenant, je suis en train de lire View.java (6870 sur un) ...

Était-ce utile?

La solution

Il semble que le problème est dans getBottomFadingEdgeStrength() et getRightFadingEdgeStrength(), ou mieux, dans le fait que je ne les ai pas passer outre à travailler avec moi sur mesure.

Ces méthodes protégées indiquent la draw() de vue quand tirer les évanouissements (et à quel point - voir quel ScrollView fait quand vous obtenez près de la limite de défilement).

Pour bords supérieur et gauche, il est facile parce que la limite est 0 dans les deux cas et les travaux de mise en œuvre par défaut (dans sa marche / arrêt de manière), mais pour les deux autres je dois remplacer les méthodes pour prendre en compte mon défilement bornes (dans mon cas, les dimensions étirables).

Autres conseils

A savoir c'est vieux, mais un travail rapide autour par rapport à des méthodes est primordial d'utiliser des gradients et la disposition relative dans votre xml. Ci-dessous, s'il vous plaît trouver une version abstraite, vous ne pouvez pas copier-coller, mais il faut transmettre le message. Désolé, je tapais tout à la main.

<!-- 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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top