105 votes

Supprimer la piste de la barre de défilement de ScrollView dans Android

Mon application Android possède une WebView principale (HTML chargée à partir d'une ressource locale) que je souhaite utiliser sur toute la largeur de l'écran et pouvoir faire défiler (verticalement). J'ai donc enveloppé la WebView dans une ScrollView dans mon layout XML, mais quoi que je fasse, je n'arrive pas à supprimer la barre de défilement du côté droit de la vue défilante. Pire encore, je ne parviens pas à modifier la couleur de fond de la barre de défilement.

La piste occupe environ 10 dp's, ce qui crée des problèmes pour le HTML dans la WebView. Je voudrais que la barre de défilement apparaisse sur le dessus de la vue web (style iPhone, si vous voyez ce que je veux dire). Vous pourriez dire "pourquoi ne pas modifier votre HTML pour qu'il soit plus fin de 10px", ce qui est ma solution de repli, mais je préférerais ne pas avoir à le faire.

Voici le fragment pertinent de la mise en page XML, vous verrez que j'ai essayé tous les attributs Android:etc que j'ai pu trouver :

<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>

Je vise la plateforme 2.1 / API lvl 7, et je ne m'occupe que des écrans de taille normale, mdp, hdp et xhdp.

509voto

Garzahd Points 1726

Pour supprimer une barre de défilement d'une vue (et de sa sous-classe) via xml :

android:scrollbars="none"

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

1 votes

Ce n'est pas ce que l'auteur de la question a demandé. Il a dit qu'il voulait like the scrollbar to appear on top of the web view content

11 votes

Cela fonctionne mais vous ne pourrez pas faire défiler l'écran lorsque le clavier est ouvert.

4 votes

Android:scrollbarThumbVertical="@null" Ajoutez ceci sur le scrollview si vous voulez que votre écran défile lorsque le clavier est ouvert :)

29voto

jkhouw1 Points 4856

Essayez d'utiliser votre activité onCreate :

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

0 votes

Merci... J'avais déjà essayé cette solution (dans le code et dans le layout.xml), mais cette approche interférait toujours avec la taille horizontale de la WebView dans la ScrollView. La meilleure solution était celle fournie ci-dessus, en supprimant complètement la ScrollView et en permettant à la WebView de gérer le défilement elle-même. Le problème de base était mon manque de compréhension de la façon dont il était approprié d'utiliser un ScrollView du tout ; c'est-à-dire que chaque vue dans Android peut gérer le défilement.

18voto

Christopher Souvey Points 1364

Je ne comprends pas bien pourquoi vous mettez un WebView en un ScrollView en premier lieu. A WebView a son propre système de défilement intégré.

Pour ce qui est de votre question, si vous voulez que les Scrollbar pour apparaître en haut de l'affiche, vous pouvez utiliser

view.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY) or   
android:scrollbarStyle="insideOverlay"

0 votes

Oui, vous avez raison de dire qu'il n'est pas nécessaire d'utiliser le ScrollView en premier lieu, je m'en suis rendu compte moi-même avant de revenir ici. Le "setScrollBarStyle" sur la vue web a fonctionné à merveille, merci !

0 votes

Non seulement il n'est pas nécessaire, mais un ScrollView ne peut pas contenir de vues défilables, de sorte que votre WebView n'aurait pas défilé de toute façon.

3 votes

Ne fonctionne pas. La bonne réponse est celle de Garzahd.

5voto

Sam Points 2090

J'ai résolu mon problème en ajoutant ceci à mon ListView :

android:scrollbars="none"

4voto

VJ Vishal Jogiya Points 131

Ces solutions ont échoué dans mon cas avec la mise en page relative et si le clavier est ouvert. android:scrollbars="none" & android:scrollbarStyle="insideOverlay" ne fonctionne pas non plus.

La barre d'outils n'est plus là, mon bouton "terminé" n'est plus là.

not Working

Celui-ci fonctionne pour moi

myScrollView.setVerticalScrollBarEnabled(false);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X