Eliminar la pista de la barra de desplazamiento de ScrollView en Android

104

Mi aplicación de Android tiene un WebView principal (HTML cargado desde un recurso local) que quiero usar en todo el ancho de la pantalla y poder hacer que se pueda desplazar (verticalmente). Así que he envuelto el WebView en un ScrollView en mi diseño XML, pero no importa lo que haga, parece que no puedo eliminar la pista de la barra de desplazamiento del lado derecho de la vista de desplazamiento. Peor aún, parece que no puedo cambiar el color de fondo de la pista de la barra de desplazamiento.

La pista ocupa aproximadamente 10 dp, lo que crea problemas para el HTML en WebView. Me gustaría que la barra de desplazamiento aparezca en la parte superior de la vista web (estilo iPhone, si sabes a qué me refiero). Ahora, podría decir "¿por qué no cambia su HTML para que sea 10px más delgado?", Que es mi solución alternativa, pero preferiría no tener que hacerlo.

Aquí está el fragmento relevante de XML de diseño, verá que probé todos los atributos de android: etc que pude encontrar:

<ScrollView 
  android:id="@+id/deal_web_view_holder"
  android:layout_below="@id/clock_bar_holder"
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent"
  android:fillViewport="false"
  android:fadingEdge="none"
  android:background="#02a7e9"
  android:scrollbars="none"
  android:scrollbarSize="0dp"
  android:paddingRight="0dp"
  android:scrollbarAlwaysDrawVerticalTrack="false"
  android:scrollbarStyle="insideOverlay"
  android:scrollbarTrackVertical="@drawable/scrollbar_track_vertical" >
    <WebView
       android:id="@+id/deal_web_view"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"/>  
</ScrollView>

Estoy apuntando a la plataforma 2.1 / API lvl 7, en realidad solo trato con pantallas de tamaño normal, mdp, hdp y xhdp.

Mick Byrne
fuente

Respuestas:

506

Para eliminar una barra de desplazamiento de una vista (y su subclase) a través de xml:

android:scrollbars="none"

http://developer.android.com/reference/android/view/View.html#attr_android:scrollbars

Garzahd
fuente
1
Esto no es lo que hizo el cartel de la pregunta. Dijo que lo haríalike the scrollbar to appear on top of the web view content
Sudhanshu
11
Funciona, pero no podrá desplazarse por la pantalla cuando el teclado esté abierto
DeltaCap019
4
android: scrollbarThumbVertical = "@ null" Agregue esto en scrollview si desea que su pantalla se desplace cuando el teclado está abierto :)
Biswas Khayargoli
29

prueba esta es tu actividad enCreate:

ScrollView sView = (ScrollView)findViewById(R.id.deal_web_view_holder);
// Hide the Scollbar
sView.setVerticalScrollBarEnabled(false);
sView.setHorizontalScrollBarEnabled(false);

http://developer.android.com/reference/android/view/View.html#setVerticalScrollBarEnabled%28boolean%29

jkhouw1
fuente
Gracias ... Ya lo había intentado (en código y en layout.xml), pero este enfoque aún interfería con el tamaño horizontal de WebView dentro de ScrollView. La mejor solución fue la proporcionada anteriormente, simplemente eliminando el ScrollView por completo y permitiendo que WebView manejara el desplazamiento en sí. La raíz del problema fue mi falta de comprensión de cómo cuándo era apropiado usar un ScrollView; es decir, cada vista en Android puede manejar el desplazamiento.
Mick Byrne
18

Estoy un poco confundido por qué estás poniendo un WebViewen un ScrollViewen primer lugar. A WebViewtiene su propio sistema de desplazamiento incorporado.

Con respecto a su pregunta real, si desea Scrollbarque aparezca en la parte superior, puede usar

view.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY) or   
android:scrollbarStyle="insideOverlay"
Christopher Souvey
fuente
Sí, tienes razón sobre no necesitar ScrollView en primer lugar, lo resolví yo mismo antes de volver a consultar aquí. El 'setScrollBarStyle' en la vista web funcionó de maravilla, ¡gracias!
Mick Byrne
No solo no es necesario, un ScrollView no puede contener vistas desplazables, por lo que su WebView no se habría desplazado de todos modos
una persona
3
No funciona. La respuesta correcta es la respuesta de Garzahd.
Misagh Emamverdi
3
la respuesta correcta está abajo, android: scrollbars = "none"
Araib karim
5

Resolví mi problema agregando esto a mi ListView:

android:scrollbars="none"
Sam
fuente
4

Estas soluciones fallaron en mi caso con el diseño relativo y si el teclado está abierto android:scrollbars="none"y android:scrollbarStyle="insideOverlay"tampoco funciona.

La barra de herramientas se ha ido, mi botón Listo se ha ido.

no funciona

Este esta trabajando para mi

myScrollView.setVerticalScrollBarEnabled(false);
VJ Vishal Jogiya
fuente
2

Al usar a continuación, resolvió el problema

android:scrollbarThumbVertical="@null"
Md. Asaduzzaman
fuente
De la opinión: Hola, no responda sólo con el código fuente. Intente proporcionar una descripción agradable sobre cómo funciona su solución. Ver: ¿Cómo escribo una buena respuesta? . Gracias
sɐunıɔ ןɐ qɐp