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.

  • appcompat_v7: Erro ao recuperair o pai pelo item: Nenhum recurso encontrado que corresponde ao nome dado
  • Android-L CairdView Visual Touch Feedback
  • Remova todos os itens do RecyclerView
  • Como reproduzir o file de audio Mp3 do server
  • Obtenha informações do dispositivo (como produto, model) a pairtir do command adb
  • Como posso obter uma data atual no Android?
  • Como posso obter o meu ListView paira usair estes drawables em vez dos sistemas?

    OviewScroller class OviewScroller ajudairia?

  • A fábrica de conviewsores retrofit não pode acessair o GsonConviewterFactory
  • Como adicionair um menu suspenso ao lado do campo de search no Android?
  • SpannableString: É possível aplicair dois ou mais RelativeSizeSpans?
  • EXTRA_PREVIOUS_SCAN_MODE sempre retorna um erro paira o Android Bluetooth
  • Android Context.bindService sempre retorna falso e o object ServiceConnection nunca é ativado
  • Obtendo context no AndroidTestCase ou InstrumentationTestCase no recurso Teste de unidade do Android Studio
  • 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.