Android
Aquí está mi lista
<ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/ListView" android:fastScrollEnabled="true" android:divider="@null" style="@drawable/listviewfastscrollstyle" ></ListView>
Este es el archivo de estilo listviewfastscrollstyle
- Al desplazar Custom ListView, el valor de la casilla de verificación cambia
- Android - Slide ListView con setX, setPadding o animación de interpolación?
- Relleno ListView en desplazamiento
- ¿Hay una buena razón para que un encabezado ListView ocupe una posición?
- Llenado de ListView en widget de pantalla de inicio en Android
<style> <item name="android:fastScrollTrackDrawable">@drawable/listselector</item> <item name="android:fastScrollThumbDrawable">@drawable/listselector</item> </style>
Este es el archivo listselector
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/channelarrows_down" /> <item android:drawable="@drawable/minimize" /> </selector>
Pero aún así, la barra de desplazamiento rápido de vista de lista no se personaliza.
- Desactivar desplazamiento de Android y hacer clic para listview
- Se ha intentado finalizar un evento de entrada pero el receptor de eventos de entrada ya se ha eliminado
- SetOnFocusChangeListener: desencadena después de cada carácter
- Barra de Acción de Android Buscar con listview
- Android cómo identificar el elemento en listview con casilla de verificación
- Cómo mostrar Toast en una clase ampliada por BaseAdapter Obtener método de vista
- Animar elementos recién agregados en ListView
- Disposición de la lista vacía de Android
El estilo que ha creado no es correcto. Necesitas darle un nombre. No estoy seguro de qué le pasó a tu último mensaje sobre esto. Haz lo siguiente:
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="listviewfastscrollstyle" parent="android:Theme"> <item name="android:fastScrollTrackDrawable">@drawable/listselector</item> <item name="android:fastScrollThumbDrawable">@drawable/listselector</item> </style> </resources>
En su Manifiesto, establezca el siguiente estilo:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/CustomTheme">
Según lo solicitado, este es el ListView que estaba probando en:
<ExpandableListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" android:drawSelectorOnTop="false" android:fastScrollAlwaysVisible="true" android:fastScrollEnabled="true" android:indicatorLeft="8dip" android:indicatorRight="52dip" android:paddingRight="32dip" />
Para cambiar el fastScrollThumbDrawable
, el fastScrollTrackDrawable
, o el color de texto del fastscroll SectionIndexer
tienes que usar un Context Theme. Las otras respuestas recomiendan sobreponer el tema de la aplicación a través de AndroidManifest
para hacer esto. Eso funciona, pero si desea diferentes apariencias de la barra de desplazamiento por ListView
no puede hacer eso. Además, la forma en que cambia el color de texto en SectionIndexer
no se debe hacer en el tema de la aplicación porque puede tener otros efectos no deseados.
La mejor manera de diseñar un ListView
para fastscrolling es crear un ListView
personalizado que utilice ContextThemeWrapper
.
Aquí hay un ejemplo:
public class FastscrollThemedListView extends ListView { public FastscrollThemedListView(Context context, AttributeSet attrs) { super(new ContextThemeWrapper(context, R.style.FastScrollTheme), attrs); } }
Eso es todo lo que necesitas. Su estilo se verá así:
<style name="FastScrollTheme"> <item name="android:textColorPrimary">?android:textColorPrimaryInverse</item> <item name="android:fastScrollThumbDrawable">@drawable/fast_scrollbar_thumb</item> <item name="android:fastScrollTrackDrawable">@drawable/fast_scrollbar_track</item> </style>
textColorPrimary
es la forma en que engancha es la forma en que se engancha al color de fuente SectionIndexer
si lo usa.
Tu ListView se vería así:
<com.yourapp.view.FastscrollThemedListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/ListView" android:fastScrollEnabled="true" android:divider="@null"/>
Y en caso de que lo necesite esto es lo que su ThumbDrawable podría verse así:
Fast_scrollbar_thumb.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:top="10dp" android:bottom="10dp"> <shape android:shape="rectangle"> <size android:height="45dp" android:width="5dp" /> <solid android:color="#DA414A" /> </shape> </item> </layer-list>
AFAIK no hay por qué el estilo de la barra FastScroll antes de HoneyComb (API 11)
- ¿Cómo puedo hacer una pantalla dinámica de volteo (como la del iPhone) en Android
- La etiqueta de meta-datos no tiene valor correcto