¿Resplandor de encargo del color del resplandor / del borde para ListView?

Tengo un ListView , y un estilo personalizado que básicamente se ve como Holo, pero con acentos de color amarillo en lugar de azul.

Cuando me desplazo a la parte inferior o superior de la lista, obtengo el azul desajustado. Hice overscroll_glow.png personalizado para overscroll_glow.png y overscroll_edge.png , pero no sé cómo usarlos.

¿Cómo puedo obtener mi ListView para utilizar estos drawables en lugar de los sistemas?

¿ OverScroller clase OverScroller ayudaría?

Puede utilizar una solución similar a la reflexión para hackear su forma de cambiar este color brillante:

 int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android"); Drawable androidGlow = context.getResources().getDrawable(glowDrawableId); androidGlow.setColorFilter(brandColor, PorterDuff.Mode.MULTIPLY); 

Me encontré con el mismo problema, y ​​parece una buena solución, al menos hasta que Google añade una API para cambiar el color (o marcar el color): http://evendanan.net/android/branding/2013/12/09/ Marca-borde-efecto /

Sólo use esta biblioteca. Sólo he tenido un problema con el contexto de ajuste en un menú emergente en el paisaje en un dispositivo que no tiene overscroll (HTC One X / Sense 4.5). ¡Funciona de maravilla!

https://github.com/AndroidAlliance/EdgeEffectOverride

Probado esto SetOverscrollFooter (Drawable) ?

Actualización 1 :

¡Vaya! No importa. Probablemente ya has visto esta discusión .

El comportamiento de resplandor se envuelve en la clase EdgeEffect . Puedes desactivar los efectos de borde por defecto llamando a setOverScrollMode(OVER_SCROLL_NEVER) en tu ListView y rodando tu propia clase EdgeEffect (cuyos detalles están más allá de mí en este momento).

Actualización 2 :

Ay. Las llamadas en el objeto EdgeEffect creado dentro de AbsListView están enterradas profundamente dentro de la lógica de desplazamiento. Podría ser difícil. Una solución fácil sería una solicitud de característica para el equipo de Android para un setEdgeEffect(EdgeEffect) en AbsListView …

Aquí está la solución:

 public static void ChangeEdgeEffect(Context cxt, View list, int color){ if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { EdgeEffect edgeEffectTop = new EdgeEffect(cxt); edgeEffectTop.setColor(color); EdgeEffect edgeEffectBottom = new EdgeEffect(cxt); edgeEffectBottom.setColor(color); try { Field f1 = AbsListView.class.getDeclaredField("mEdgeGlowTop"); f1.setAccessible(true); f1.set(list, edgeEffectTop); Field f2 = AbsListView.class.getDeclaredField("mEdgeGlowBottom"); f2.setAccessible(true); f2.set(list, edgeEffectBottom); } catch (Exception e) { e.printStackTrace(); } }else{ int glowDrawableId = cxt.getResources().getIdentifier("overscroll_glow", "drawable", "android"); Drawable androidGlow = cxt.getResources().getDrawable(glowDrawableId); assert androidGlow != null; androidGlow.setColorFilter(cxt.getResources().getColor(color), PorterDuff.Mode.SRC_ATOP); } } 

Por favor, no olvide cambiar la línea de borde de overscroll:

  final int edgeDrawableId = res.getIdentifier("overscroll_edge", "drawable", "android"); final Drawable overscrollEdge = res.getDrawable(edgeDrawableId); overscrollEdge.setColorFilter(res.getColor(colorID), android.graphics.PorterDuff.Mode.SRC_ATOP); 

Añado esta respuesta porque este es uno de los mejores resultados sobre el tema y la respuesta superior ya no es correcta. Bueno, en realidad es para las versiones pre-lollipop, pero como se espera, cuando se utiliza la reflexión de java se mordió de nuevo, y eso es lo que pasó, si se utiliza el código

 int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android"); Drawable androidGlow = context.getResources().getDrawable(glowDrawableId); androidGlow.setColorFilter(context.getResources().getColor(R.color.gm_color), PorterDuff.Mode.MULTIPLY); 

Esto se bloqueará en los dispositivos Lollipop + porque ese recurso ya no existe. Así que para Android 5. + usted debe usar:

  <item name="android:colorEdgeEffect">@color/custom_color</item> 

En su tema, overriden en un archivo values-v21/themes.xml si no está orientado a la versión min 21

  • Reproducir video de youtube en WebView
  • ¿Cómo comprobar el tipo de un widget de vista?
  • Ver con estado de visibilidad GONE ocupar espacio en la pantalla
  • Lanzar widget desde el código
  • Actualizar programaticamente widget de actividad / servicio / receptor
  • Cómo implementar correctamente onRestoreInstanceState () para una subclase DialogPreference?
  • ¿Por qué ProgressBar detiene la animación mientras cambia el diseño en Android?
  • Asignación de texto al texto en edittext
  • Holoeverywhere: cómo eliminar mediante programación en tiempo de ejecución la barra de acción de una actividad
  • Deshabilitar el teclado virtual en NumberPicker
  • ¿Hay alguna alternativa para ActionBar en 2.2?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.