У меня есть Android scrollview с белым фоном. Затухающий край представляет собой белый полупрозрачный градиент. Я бы хотел изменить его как черный, а не белый. У меня есть ListView в том же проекте с белым фоном, который по умолчанию имеет черный затухающий край, но я не могу найти где (если где угодно), который был установлен.Как установить цвет затухающего края ScrollView Android?
ответ
Только что нашел это путем проб и ошибок.
Просто установите android:background="@color/yourColor"
для <ScrollView>
. Он задает тень для заданного цвета.
EDIT: это не отвечает на вопрос, который просил ScrollView
. Этот ответ работает только с AbsListView
и потомками (включая ListView
).
Цвет затухающего края регулируется атрибутом android:cacheColorHint
.
т.д .:
<ScrollView android:cacheColorHint="#ff000000" android:background="#ffffffff" />
будет установить фон белый, а cacheColorHint
используется для рисования замирания края цвет - в этом случае, было бы черным.
Я пробовал этот атрибут, но он не работает. Похоже, что этот атрибут/метод применяется только к [AbsListView] (http://developer.android.com/intl/fr/reference/android/widget/AbsListView.html#setCacheColorHint%28int%29). –
Как насчет http://developer.android.com/intl/zh-CN/reference/android/view/View.html#setDrawingCacheBackgroundColor%28int%29? – Joe
У меня был этот вопрос о horizontalscrollview, и вышеупомянутые изменения в xml сработали для него (по крайней мере, на эмуляторе). – Gimbl
Если вы не знаете, что изменило цвет вашего исчезающего края, это, вероятно, было применение стиля или темы. Проверьте свой манифест для android:theme="something"
в действии. Если тема взята из группы android.R.style.Theme.Light
, то край будет белым. По умолчанию android.R.style.Theme
и android.R.style.Theme.Black
будут иметь черные края затухания. Темы также влияют на другие атрибуты, поэтому полностью проверяйте атрибуты, прежде чем бросать их на одну вещь.
Я проверил тему активности, это @android: style/Theme.NoTitleBar [источник которого] (http://www.google.com/codesearch/p?hl=ru#uX1GffpyOZk/core/res/res /values/themes.xml&q=Theme.NoTitleBar&sa=N&cd=12&ct=rc) содержит только андроид: windowNoTitle = true. –
Комментарий над ним: '' Итак, вы используете темную тему, которая включает в себя черные края затухания. Вы хотите 'Theme.Light.NoTitleBar' – jqpubliq
Я изменил эту тему, и это не повлияло на цвет затухающего края. –
Если вам нужен другой цвет затухающего края, чем фон, вы должны переопределить метод getSolidColor() ScrollView. Например:
@Override
public int getSolidColor() {
return Color.rgb(0x30, 0x30, 0x30);
}
Я не знаю, почему никто не голосовал за то, что явно является самым общим и лучшим ответом. Просто взгляните на JavaDoc of View и в нем четко сказано. – jfelectron
Он прав, это единственный способ получить цветную область затухания при использовании фонового изображения. Просто расширьте класс ListView. –
Полное решение класса для этого вопроса размещено здесь: http://stackoverflow.com/questions/4050903/is-it-possible-to-change-the-colour-of-the-fadingedge-of-a-listview/ 5877824 # 5877824 –
Вы можете использовать это:
https://github.com/AndroidAlliance/EdgeEffectOverride
Простой чистый и работает отлично!
, поскольку я понимаю вопрос, на самом деле это не решение, но я все равно искал это. Так что спасибо за это – Jakob
Вы можете использовать:
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);
Хорошая статья, описывающая это: http://evendanan.net/android/branding/2013/12/09/branding-edge-effect/ – easycheese
ли это:
<ScrollView
android:theme="@style/scrollUpdate"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
значений \ стилей положить тип
<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>
работ мне ТКС!
Да, чертовски просто. Как вы можете себе представить, вам просто нужно установить непосредственный дочерний элемент scrollview на нужный фон. Благодаря! –
В зависимости от времени загрузки списка это может показаться неудобным. (например, listview появляется с цветом фона перед тем, как ячейки списка будут нарисованы сверху) ... – bernstein
Лучше установить тот же цвет, что и фон ваших ячеек и списка. Затем просто измените cachecolorhint на желаемый цвет затухания края. – bernstein