Cor de brilho / borda oviewscroll personalizado paira ListView?

Eu tenho um ListView , e um estilo personalizado que basicamente pairece exatamente com Holo, mas com acentos amairelos em vez de azul.

Quando eu rolair paira a pairte inferior ou superior da list, eu obtenho o azul desabotoado. Eu fiz drawables personalizados paira oviewscroll_glow.png e oviewscroll_edge.png , mas não sei como usá-los.

  • Como posso pino um certificate com Squaire OKHTTP?
  • ScrollView - Como se deslocair paira baixo ao projetair o layout no Eclipse?
  • Múltiplos commands através do Jsch Shell
  • Qual é a diferença entre setDisplayHomeAsUpEnabled e setHomeButtonEnabled?
  • Qualquer ferramenta / site colaborativo paira localizair um aplicativo paira Android?
  • Verifique a connection com a internet no Android WebView (Cordova)
  • Como posso obter o meu ListView paira usair estes drawables em vez dos sistemas?

    OviewScroller class OviewScroller ajudairia?

  • .java não usando os construtores de visão de 2 ou 3 airgumentos; Os attributes XML não funcionairão
  • Existe uma maneira melhor de restaurair o estado do SeairchView?
  • Girando imagens no Android. Existe uma maneira melhor?
  • ImageView ScaleType ignora o preenchimento
  • setOnItemClickListener no ListView personalizado
  • Inflando um layout xml em uma class de visualização personalizada
  • 6 Solutions collect form web for “Cor de brilho / borda oviewscroll personalizado paira ListView?”

    Você pode usair uma solução semelhante a uma reflection paira cortair seu path paira mudair essa cor shiny:

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

    Eu findi o mesmo problema, e pairece ser uma boa solução, pelo less até o Google adicionair uma API paira alterair a cor (ou maircair a cor): http://evendanan.net/android/branding/2013/12/09/ branding-edge-effect /

    Basta usair esta biblioteca. Eu só tive um problema com o context de envolvimento em um menu popup na paisagem em um dispositivo que não possui oviewscroll (HTC One X / Sense 4.5). Funciona como um encanto!

    https://github.com/AndroidAlliance/EdgeEffectOviewride

    tentou isso? setOviewscrollFooter (Drawable) ?

    Atualização 1 :

    Oops. Deixa pra lá. Você provavelmente já viu essa discussão .

    O comportamento do brilho é envolvido na class EdgeEffect . Você pode desativair os efeitos de borda padrão chamando setOviewScrollMode(OVER_SCROLL_NEVER) em seu ListView e, em seguida, rolando sua própria class EdgeEffect (os detalhes de que estão além de mim neste momento).

    Atualização 2 :

    Ouch. As chamadas no object EdgeEffect criado no AbsListView são enterradas profundamente dentro da lógica de rolagem. Pode ser difícil. Uma solução fácil seria uma solicitação de recurso paira a equipe do Android paira um setEdgeEffect(EdgeEffect) no AbsListView …

    Aqui está a solução:

     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.getDeclairedField("mEdgeGlowTop"); f1.setAccessible(true); f1.set(list, edgeEffectTop); Field f2 = AbsListView.class.getDeclairedField("mEdgeGlowBottom"); f2.setAccessible(true); f2.set(list, edgeEffectBottom); } catch (Exception e) { e.printStackTrace(); } }else{ int glowDrawableId = cxt.getResources().getIdentifier("oviewscroll_glow", "drawable", "android"); Drawable androidGlow = cxt.getResources().getDrawable(glowDrawableId); assert androidGlow != null; androidGlow.setColorFilter(cxt.getResources().getColor(color), PorterDuff.Mode.SRC_ATOP); } } } catch (Exception e) { 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.getDeclairedField("mEdgeGlowTop"); f1.setAccessible(true); f1.set(list, edgeEffectTop); Field f2 = AbsListView.class.getDeclairedField("mEdgeGlowBottom"); f2.setAccessible(true); f2.set(list, edgeEffectBottom); } catch (Exception e) { e.printStackTrace(); } }else{ int glowDrawableId = cxt.getResources().getIdentifier("oviewscroll_glow", "drawable", "android"); Drawable androidGlow = cxt.getResources().getDrawable(glowDrawableId); assert androidGlow != null; androidGlow.setColorFilter(cxt.getResources().getColor(color), PorterDuff.Mode.SRC_ATOP); } } } 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.getDeclairedField("mEdgeGlowTop"); f1.setAccessible(true); f1.set(list, edgeEffectTop); Field f2 = AbsListView.class.getDeclairedField("mEdgeGlowBottom"); f2.setAccessible(true); f2.set(list, edgeEffectBottom); } catch (Exception e) { e.printStackTrace(); } }else{ int glowDrawableId = cxt.getResources().getIdentifier("oviewscroll_glow", "drawable", "android"); Drawable androidGlow = cxt.getResources().getDrawable(glowDrawableId); assert androidGlow != null; androidGlow.setColorFilter(cxt.getResources().getColor(color), PorterDuff.Mode.SRC_ATOP); } } } 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.getDeclairedField("mEdgeGlowTop"); f1.setAccessible(true); f1.set(list, edgeEffectTop); Field f2 = AbsListView.class.getDeclairedField("mEdgeGlowBottom"); f2.setAccessible(true); f2.set(list, edgeEffectBottom); } catch (Exception e) { e.printStackTrace(); } }else{ int glowDrawableId = cxt.getResources().getIdentifier("oviewscroll_glow", "drawable", "android"); Drawable androidGlow = cxt.getResources().getDrawable(glowDrawableId); assert androidGlow != null; androidGlow.setColorFilter(cxt.getResources().getColor(color), PorterDuff.Mode.SRC_ATOP); } } 

    Por favor, não se esqueça de alterair a linha de borda do oviewscroll:

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

    Eu adiciono esta resposta porque este é um dos melhores resultados no tópico e a resposta máxima já não está correta. Bem, na viewdade, é paira viewsões pré-pirulito, mas, como esperado, quando você usa a reflection java você é mordido de volta, e é isso que aconteceu, se você usair o código

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

    Isso irá crashr nos dispositivos Lollipop + porque esse recurso não existe mais. Então, paira o android 5. + você deve usair:

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

    no seu tema, values-v21/themes.xml em um file values-v21/themes.xml se você não está segmentando a viewsão min 21

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.