web-dev-qa-db-fra.com

Comment définir la couleur d'un Android ScrollView fading edge?

J'ai un Android scrollview avec un fond blanc. Le fondu est un dégradé translucide blanc. Je voudrais le changer en noir au lieu de blanc. J'ai un ListView dans le même projet avec un fond blanc qui a un bord noir qui s'estompe par défaut, mais je ne trouve pas où (si n'importe où) qui a été défini.

39
Andrew Shooner

Je viens de le découvrir par essais et erreurs.

Réglez simplement Android:background="@color/yourColor" pour le <ScrollView>. Il mettra l'ombre à la couleur donnée.

40
digitarald

Si vous souhaitez une couleur de fondu différente de celle de l'arrière-plan, vous devez remplacer la méthode getSolidColor () de ScrollView. Par exemple:

@Override
public int getSolidColor() {
    return Color.rgb(0x30, 0x30, 0x30);
}
80
LEHO

Vous pouvez utiliser:

    final int glowDrawableId = context.getResources().getIdentifier("overscroll_glow",
            "drawable", "Android");
    final Drawable androidGlow = context.getResources().getDrawable(glowDrawableId);
    androidGlow.setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);

    int edgeDrawableId = context.getResources().getIdentifier("overscroll_Edge", "drawable",
            "Android");
    final Drawable androidEdge = context.getResources().getDrawable(edgeDrawableId);
    androidEdge.setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
7
annelorayne

Vous pouvez utiliser ceci:

https://github.com/AndroidAlliance/EdgeEffectOverride

enter image description here

Simple, propre et parfait!

6
David

EDIT : cela ne répond pas à la question qui demandait ScrollView. Cette réponse ne fonctionne que sur AbsListView et ses descendants (y compris ListView).


La couleur du fondu est contrôlée par le Android:cacheColorHint attribut.

Par exemple.:

<ScrollView Android:cacheColorHint="#ff000000" Android:background="#ffffffff" />

définira l'arrière-plan sur blanc, et le cacheColorHint est utilisé pour dessiner la couleur du fondu - dans ce cas, ce serait le noir.

6
Joe

Si vous ne savez pas ce qui a changé la couleur de votre fondu, c'était probablement l'application d'un style ou d'un thème. Vérifiez votre manifeste pour Android:theme="something" dans une activité. Si le thème provient du groupe Android.R.style.Theme.Light l'Edge sera blanc. Le défaut Android.R.style.Theme et Android.R.style.Theme.Black aura des bords noirs. Les thèmes affectent également d'autres attributs, alors vérifiez les attributs complètement avant de les jeter pour une chose.

3
jqpubliq

Faites ceci:

  <ScrollView
    Android:theme="@style/scrollUpdate"
    Android:layout_width="match_parent"
    Android:layout_height="0dp"
    Android:layout_weight="1" >

dans les valeurs\styles mettre le style

<style name="scrollUpdate">
    <item name="colorAccent">@color/yourcolor</item>
    <item name="Android:color">@color/yourcolor</item>
    <item name="colorPrimary">@color/yourcolor</item>
    <item name="colorPrimaryDark">@color/yourcolor</item>
</style>

fonctionne pour moi tks!

2
Douglas