Ich habe eine Android Scrollview mit einem weißen Hintergrund. Die Fading-Kante ist ein weißer transluzenter Verlauf. Ich würde es gerne schwarz statt weiß ändern. Ich habe eine ListView in demselben Projekt mit einem weißen Hintergrund, der standardmäßig eine schwarze Fading-Kante hat, aber ich kann nicht finden, wo (wenn irgendwo) das gesetzt wurde.Wie stellt man die Farbe einer Android ScrollView Fade Edge ein?
Antwort
fand es nur durch Versuch und Irrtum heraus.
Stellen Sie einfach android:background="@color/yourColor"
für die <ScrollView>
. Es wird den Schatten auf die angegebene Farbe setzen.
BEARBEITEN: Dies beantwortet nicht die Frage, die nach ScrollView
gefragt wurde. Diese Antwort funktioniert nur auf AbsListView
und Nachkommen (einschließlich ListView
).
Die Farbe der schwindenden Kante wird durch das Attribut android:cacheColorHint
gesteuert.
Z. B .:
<ScrollView android:cacheColorHint="#ff000000" android:background="#ffffffff" />
den Hintergrund auf weiß gesetzt, und die cacheColorHint
verwendet wird, um die verblassenden Rand Farbe zu ziehen - in diesem Fall würde es schwarz sein.
Ich habe dieses Attribut versucht, aber es funktioniert nicht. Es scheint, dass dieses Attribut/Verfahren gelten nur für [AbsListView] (http://developer.android.com/intl/fr/reference/android/widget/AbsListView.html#setCacheColorHint%28int%29). –
Was ist mit http://developer.android.com/intl/zh-CN/reference/android/view/View.html#setDrawingCacheBackgroundColor%28int%29? – Joe
Ich hatte diese Frage über eine horizontalscrollview, und die obigen Änderungen an der XML funktionierten dafür (zumindest auf dem Emulator). – Gimbl
Wenn Sie nicht wissen, was die Farbe des verblassenden Rand geändert, es war wahrscheinlich die Anwendung eines Stils oder Thema. Überprüfen Sie Ihr Manifest für android:theme="something"
in einer Aktivität. Wenn das Thema aus der Gruppe android.R.style.Theme.Light
stammt, wird die Kante weiß sein. Die Standardwerte android.R.style.Theme
und android.R.style.Theme.Black
haben schwarze Fading-Kanten. Themen wirken sich auch auf andere Attribute aus. Überprüfen Sie daher die Attribute vollständig, bevor Sie sie für eine Sache einwerfen.
Ich habe das Thema Aktivität überprüft, es ist @android: style/Theme.NoTitleBar die [Quelle von dem] (http://www.google.com/codesearch/p?hl=de#uX1GffpyOZk/core/res/res /values/themes.xml&q=Theme.NoTitleBar&sa=N&cd=12&ct=rc) enthält nur android: windowNoTitle = true. –
Der Kommentar darüber: '' So verwenden Sie das dunkle Thema, das schwarze verblassende Ränder enthält. Sie wollen 'Theme.Light.NoTitleBar' – jqpubliq
Ich habe zu diesem Thema geändert, und es hat die verblassende Kante Farbe nicht beeinflusst. –
Wenn Sie eine andere Farbe Rand wollen als den Hintergrund verblaßt, müssen Sie die Scroll des getSolidColor() -Methode außer Kraft setzen. Zum Beispiel:
@Override
public int getSolidColor() {
return Color.rgb(0x30, 0x30, 0x30);
}
Ich weiß nicht, warum niemand gewählt hat, was eindeutig die allgemeinste und beste Antwort ist. Schau dir einfach JavaDoc von View an und es wird deutlich gesagt, wie viel. – jfelectron
Er hat Recht, nur so kann man einen farbigen Bereich bei der Verwendung eines Hintergrundbildes erhalten. Erweitern Sie einfach die ListView-Klasse. –
Eine komplette Klassenlösung für diese Frage ist hier veröffentlicht: http://StackOverflow.com/Questions/4050903/IS-possible-to-change-the-colour-of-the-Fadingegedge-of-a-listview/ 5877824 # 5877824 –
können Sie verwenden:
https://github.com/AndroidAlliance/EdgeEffectOverride
Einfach sauber und gut funktionierend perfekt!
wie ich die Frage verstehe, ist dies nicht wirklich die Lösung, aber ich war auf der Suche nach diesem sowieso. Also vielen Dank dafür – Jakob
können Sie verwenden:
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);
Guter Artikel, der dies beschreibt, ist: http://evendanan.net/android/branding/2013/12/09/branding-edge-effect/ – easycheese
tun:
<ScrollView
android:theme="@style/scrollUpdate"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
in Werte \ styles den Stil
<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>
tks mir
Werke setzen!
Ja, teuflisch einfach. Wie Sie sich vorstellen können, müssen Sie dann das direkte Kind der Scrollview auf den gewünschten Hintergrund einstellen. Vielen Dank! –
Abhängig von der Ladezeit der Listview kann dies peinlich sein. (z. B. wird Listenansicht mit der Hintergrundfarbe angezeigt, bevor die Listenzellen oben angezeigt werden) ... – bernstein
Es wäre besser, die gleiche Farbe wie den Hintergrund Ihrer Zellen und die Listenansicht festzulegen. Dann ändern Sie einfach das CacheColorHinting auf die gewünschte Kantenüberblendfarbe – bernstein