Pregunta

Me hizo una ImageView personalizado que soporta el desplazamiento básica a través de llamadas a View.scrollBy() en un GestureDetector. Quería añadir alguna información sobre el logro de los límites de desplazamiento de modo He activado la decoloración con:

setVerticalFadingEdgeEnabled(true);
setHorizontalFadingEdgeEnabled(true);

Pero las obras de desvanecimiento como esperaba sólo en los bordes superior e izquierdo, mientras que las de abajo y derecho no se desvanecen hacen. Estoy seguro de que los bordes no están fuera de la pantalla porque la vista se establece en fill_parent en altura y anchura. Entonces, ¿qué pasa?


EDIT: sólo permite la decoloración bordes horizontales verticales / confirma que sólo la parte superior / bordes izquierdo se ven inmersos. Ahora estoy tratando de leer View.java (6870 en una) ...

¿Fue útil?

Solución

Parece que el problema está en getBottomFadingEdgeStrength() y getRightFadingEdgeStrength(), o mejor, en el hecho de que yo no les anulan al trabajo con mi vista personalizada.

Estos métodos protegidos dicen draw() de la vista cuando dibujar los desvanecimientos (y con qué fuerza - ver lo que hace un ScrollView medida que se acerca al límite de desplazamiento).

Para los mejores e izquierda bordes es fácil porque el límite es 0 en ambos casos y los trabajos de implementación por defecto (en su encendido / apagado de forma), pero para los otros dos lo que sobreescribir los métodos para tener en cuenta mi propio desplazamiento límites (en mi caso, las dimensiones dibujable).

Otros consejos

A que esto es viejo, pero un trabajo rápido en comparación con alrededor anulando métodos es el uso de gradientes y la disposición relativa en el código XML. A continuación encontrará una versión abstracta, no se puede copiar y pegar, pero se debe retransmitir el mensaje. Lo sentimos he escrito todo a mano.

<!-- 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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top