2010-05-17 10 views
7

En la nueva aplicación oficial de Twitter, las barras de desplazamiento en todas las vistas de lista que utiliza la aplicación están ocultas a menos que el usuario se desplace por la lista.Oculte automáticamente las barras de desplazamiento cuando no se desplaza en un ListView

Cuando comienza a desplazarse, aparecen las barras de desplazamiento. Cuando te paras, se desvanecen con una animación hasta que desaparecen por completo.

Parece que no puedo encontrar nada en la documentación que indique que se trata de una característica estándar.

¿Es esto algo incluido en la API? Si no, ¿alguien sabe cómo se podría hacer esto?

Respuesta

4

Confirmado: use android: fadeScrollbars (si es API de nivel 5) o intente utilizar setOnScrollListener para comprobar el estado de desplazamiento y ocultar/mostrar las barras. Algunos ejemplos de código están en este tema: how to detect Android ListView Scrolling stopped?

1

No los he usado todavía, pero podría jugar con android:scrollbarDefaultDelayBeforeFade y android:scrollbarFadeDuration, disponible en todos los widgets (es decir, subclases de View).

+0

que podría funcionar, si se combina con nivel setScrollbarFadingEnabled (boolean) API 5 - atributo xml es Android: fadeScrollbars –

4

puede habilitar la barra de desplazamiento a la decoloración durante toda su aplicación en el nivel 5 de la API y más reciente a través de un tema personalizado y el atributo fadeScrollbars estilo añadiendo esto a styles.xml:

<style name="Theme.App" parent="android:Theme.Light"> 
    <item name="android:fadeScrollbars">true</item> 
</style> 

a continuación, establezca el nuevo tema para su aplicación en AndroidManifest.xml:

<application android:icon="@drawable/app_icon" 
      android:label="@string/app_name" 
      android:description="@string/description" 
      android:theme="@style/Theme.App"> 

Sólo asegúrese de que no está anulando este tema global de las actividades individuales. Las versiones anteriores de Android ignorarán con seguridad este atributo XML desconocido y no atenuarán las barras de desplazamiento.

0

Seguí la respuesta de Alex y funcionó usando la configuración del tema y el código.

GridView gridview = (GridView) findViewById(R.id.mygridView); 
gridview.setScrollbarFadingEnabled(false); 

Sin embargo, tuve un problema con el componente de la galería. Mientras que lo siguiente compilará bien, arrojará una NullPointerException. Supongo que esto tiene que ver con una Galería que no tiene barras de desplazamiento para mostrar/ocultar.

Gallery gallery = (Gallery) findViewById(R.id.myGallery); 
gallery.setScrollbarFadingEnabled(false); // <-- this will throw an exception 

androide 2.2

Cuestiones relacionadas