cómo puedo configurar el pulgar personalizado para desplazarse rápidamente en la vista de lista.scroll rápido custom thumb
Respuesta
puede establecer que en el style.xml
<style name="Theme_app" parent="@android:style/Theme.Holo.Light">
<item name="android:fastScrollThumbDrawable">@drawable/fastscroll_thumb_holo</item>
</style>
de crear un xml en Disponibles para la imagen
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/fastscroll_thumb_pressed_holo" />
<item android:drawable="@drawable/fastscroll_thumb_default_holo" />
</selector>
Si echas un vistazo al código fuente de Android 2.2r1 (revisión 1), hay una clase llamada android.widget.FastScroller
, que tiene el método useThumbDrawable()
.
Yo solo downloaded the source from a blog called MobileBytes que lo contiene, ¿quizás podría importarlo a su proyecto e implementarlo? (O actualizar su API a 2.2 r1)
estoy usando el pero no sé por qué no funciona, por lo que al buscar en la web encontré here una solución de código difícil, no sé si funciona en la antigua API, pero en mi caso se resolvió el problema. Tenga en cuenta que estoy usando API 18 como objetivo y un dispositivo con API 17 para probar.
el código:
try {
Field f = AbsListView.class.getDeclaredField("mFastScroller");
f.setAccessible(true);
Object o = f.get(<<your listView here>>);
f = f.getType().getDeclaredField("mThumbDrawable");
f.setAccessible(true);
Drawable drawable = (Drawable) f.get(o);
drawable = getResources().getDrawable(R.drawable.<<your thumb drawable here can be a selector>>);
f.set(o, drawable);
} catch (Exception e) {
e.printStackTrace();
}
código duro para KitKat androide (campo "mThumbDrawable" en FastScroller (KitKat androide) no es existir)
try {
java.lang.reflect.Field f = AbsListView.class.getDeclaredField("mFastScroller");
f.setAccessible(true);
Object o = f.get(root.findViewById(R.id.beam_contact_listview));
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
f = f.getType().getDeclaredField("mThumbImage");
} else {
f = f.getType().getDeclaredField("mThumbDrawable");
}
f.setAccessible(true);
Drawable drawable = (Drawable) f.get(o);
drawable = getResources().getDrawable(R.drawable.sv_fastscroll);
f.set(o, drawable);
} catch (Exception e) {
e.printStackTrace();
}
Ajuste del Disponibles a partir de estilos es la manera de ir. Sin embargo, si usted quiere hacer esto mediante programación aquí hay dos métodos que deben ser útiles:
/**
* Set a ListView or GridView fast scroll thumb image.
*
* @param listView The {@link android.widget.ListView} or {@link android.widget.GridView}
* @param thumb The fast-scroll drawable
* @return {@code true} if successfully set.
*/
public static boolean setFastScrollThumbImage(AbsListView listView, Drawable thumb) {
try {
Field f;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
f = AbsListView.class.getDeclaredField("mFastScroll");
} else {
f = AbsListView.class.getDeclaredField("mFastScroller");
}
f.setAccessible(true);
Object o = f.get(listView);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
f = f.getType().getDeclaredField("mThumbImage");
f.setAccessible(true);
ImageView iv = (ImageView) f.get(o);
iv.setImageDrawable(thumb);
} else {
f = f.getType().getDeclaredField("mThumbDrawable");
f.setAccessible(true);
Drawable drawable = (Drawable) f.get(o);
drawable = thumb;
f.set(o, drawable);
}
return true;
} catch (Exception ignored) {
}
return false;
}
/**
* Set a ListView or GridView fast scroll thumb color.
*
* @param listView The {@link android.widget.ListView} or {@link android.widget.GridView}
* @param color The color for the fast-scroll thumb
* @return {@code true} if successfully set.
*/
public static boolean setFastScrollThumbColor(AbsListView listView, int color) {
try {
Field f;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
f = AbsListView.class.getDeclaredField("mFastScroll");
} else {
f = AbsListView.class.getDeclaredField("mFastScroller");
}
f.setAccessible(true);
Object o = f.get(listView);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
f = f.getType().getDeclaredField("mThumbImage");
f.setAccessible(true);
ImageView iv = (ImageView) f.get(o);
iv.setColorFilter(color, android.graphics.PorterDuff.Mode.SRC_ATOP);
} else {
f = f.getType().getDeclaredField("mThumbDrawable");
f.setAccessible(true);
final Drawable drawable = (Drawable) f.get(o);
drawable.setColorFilter(color, android.graphics.PorterDuff.Mode.SRC_ATOP);
}
return true;
} catch (Exception ignored) {
}
return false;
}
- 1. iPhone compile for thumb
- 2. carrierwave thumb issue
- 3. Android SeekBar thumb Personalización
- 4. UILabel Over UISlider Thumb
- 5. desplazamiento suave/scroll inercial/impulso scroll
- 6. objdump y ARM vs Thumb
- 7. jQuery Infinite Scroll: el evento se dispara varias veces cuando el desplazamiento es rápido
- 8. Lienzo arrastrable en WPF usando un 'Thumb'
- 9. Android SeekBar thumb obtiene recortado/cortado
- 10. ¿Cómo establecer scrollbar thumb programmatically en Android?
- 11. Custom 'ExportFactory'
- 12. Custom DatePicker
- 13. El pulgar de desplazamiento rápido desaparece al desplazarse por AlphabetIndexer
- 14. GridView con scroll horizontal
- 15. Android Scroll Pagination
- 16. ListView get scroll position?
- 17. Moving Div with Scroll
- 18. jQuery-autocomplete scroll issue
- 19. Fading Element on Scroll
- 20. DIV auto scroll
- 21. UITableView scroll direction
- 22. JQuery Detect Scroll at Bottom
- 23. reiniciar TextView scroll to top
- 24. Jquery Nice scroll no funciona
- 25. jQuery Parallax/Scroll Events Rendimiento
- 26. jQuery Infinite Scroll y Gridview
- 27. Explorador de eventos Scroll javascript
- 28. Android Maps get Scroll Event
- 29. IE7 CSS Scroll Div Bug
- 30. Desactivar Carbon Emacs scroll beep
mThumbImage no es Disponibles en KitKat +, es un ImageButton. –
@JaredRummler gracias por la ayuda –