Come impostare il colore di un bordo di sbiadimento di Scrollview Android?
-
27-09-2019 - |
Domanda
Ho uno scrollview Android con uno sfondo bianco. Il bordo sbiadito è un gradiente traslucido bianco. Vorrei cambiarlo essere nero invece di bianco. Ho una visione di List nello stesso progetto con uno sfondo bianco che ha un bordo di sbiadimento nero per impostazione predefinita, ma non riesco a trovare dove (se ovunque) è stato impostato.
Soluzione
Ho appena scoperto per prova ed errore.
Semplicemente impostato android:background="@color/yourColor"
per il <ScrollView>
. Imposterà l'ombra sul colore dato.
Altri suggerimenti
Se si desidera un bordo di sbiadimento di colore diverso rispetto allo sfondo, è necessario sovrascrivere il metodo getSolidColor () di ScrollView. Per esempio:
@Override
public int getSolidColor() {
return Color.rgb(0x30, 0x30, 0x30);
}
Puoi usare:
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);
Puoi usarlo:
https://github.com/androidalliance/edgeEffectoverride
Semplice pulito e funzionante perfetto!
MODIFICARE: Questo non risponde alla domanda, che chiedeva ScrollView
. Questa risposta funziona solo AbsListView
e discendenti (incluso ListView
).
Il colore del bordo sbiaditore è controllato dal android:cacheColorHint
attributo.
Per esempio:
<ScrollView android:cacheColorHint="#ff000000" android:background="#ffffffff" />
imposterà lo sfondo su bianco e il cacheColorHint
viene utilizzato per disegnare il colore del bordo di sbiadimento - in questo caso, sarebbe nero.
Se non sai cosa ha cambiato il colore del tuo bordo sbiadito, è stata probabilmente l'applicazione di uno stile o di un tema. Controlla il tuo manifest per android:theme="something"
in un'attività. Se il tema proviene dal gruppo android.R.style.Theme.Light
Il bordo sarà bianco. Il predefinito android.R.style.Theme
e android.R.style.Theme.Black
avrà bordi di sbiadimento nero. I temi influenzano anche altri attributi, quindi controlla completamente gli attributi prima di lanciarli per prima cosa.
Fai questo:
<ScrollView
android:theme="@style/scrollUpdate"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
in valori stili metti lo stile
<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>
funziona per me tks!