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

104

Mon application Android a une WebView principale (HTML chargé à 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 encapsulé le WebView dans un ScrollView dans mon XML de mise en page, mais quoi que je fasse, je n'arrive pas à supprimer la piste de la barre de défilement du côté droit de la vue de défilement. Pire encore, je n'arrive pas à changer la couleur d'arrière-plan de la piste de la barre de défilement.

La piste occupe environ 10dp ou plus, ce qui crée des problèmes pour le HTML dans la WebView. Je voudrais que la barre de défilement apparaisse en haut de la vue Web (style iPhone, si vous voyez ce que je veux dire). Maintenant, vous pourriez dire "pourquoi ne changez-vous pas votre HTML pour qu'il soit 10px plus fin?", Qui est ma solution de secours, mais je préfère de loin ne pas avoir à le faire.

Voici l'extrait de code XML de mise en page pertinent, 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 cible la plate-forme 2.1 / API lvl 7, ne traitant que des écrans de taille normale, mdp, hdp et xhdp.

Mick Byrne
la source

Réponses:

506

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

Garzahd
la source
1
Ce n'est pas ce que posait l'affiche de la question. Il a dit qu'il le feraitlike the scrollbar to appear on top of the web view content
Sudhanshu
11
Cela fonctionne mais vous ne pourrez pas faire défiler l'écran lorsque le clavier est ouvert
DeltaCap019
4
android: scrollbarThumbVertical = "@ null" Ajoutez ceci sur scrollview si vous voulez que votre écran défile lorsque le clavier est ouvert :)
Biswas Khayargoli
29

essayez ceci est votre activité surCreate:

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
la source
Merci ... J'avais déjà essayé celui-là (dans le code et dans le layout.xml), mais cette approche interférait toujours avec la taille horizontale du WebView dans le ScrollView. La meilleure solution était celle fournie ci-dessus, supprimant simplement le ScrollView et permettant à WebView de gérer le défilement lui-même. Le problème principal é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 sous Android peut gérer le défilement.
Mick Byrne le
18

Je ne sais pas pourquoi vous mettez un WebViewdans un ScrollViewen premier lieu. A WebViewa son propre système de défilement intégré.

En ce qui concerne votre question, si vous souhaitez que le Scrollbarapparaisse en haut, vous pouvez utiliser

view.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY) or   
android:scrollbarStyle="insideOverlay"
Christophe Souvey
la source
Oui, vous avez raison de ne pas avoir besoin de ScrollView en premier lieu, j'ai travaillé moi-même avant de revenir ici. Le 'setScrollBarStyle' sur la vue Web a fonctionné un régal, merci!
Mick Byrne
Non seulement ce n'est pas nécessaire, mais un ScrollView ne peut pas contenir de vues déroulantes, donc votre WebView n'aurait pas défilé de toute façon
A Person
3
Ca ne fonctionne pas. La bonne réponse est la réponse de Garzahd.
Misagh Emamverdi
3
la bonne réponse est ci-dessous, android: scrollbars = "none"
Araib karim
5

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

android:scrollbars="none"
Sam
la source
4

Ces solutions ont échoué dans mon cas avec la disposition relative et si KeyBoard est ouvert android:scrollbars="none"et android:scrollbarStyle="insideOverlay"ne fonctionne pas non plus.

la barre d'outils a disparu, mon bouton terminé a disparu.

Ca ne fonctionne pas

Celui-ci fonctionne pour moi

myScrollView.setVerticalScrollBarEnabled(false);
VJ Vishal Jogiya
la source
2

En utilisant ci-dessous, résolu le problème

android:scrollbarThumbVertical="@null"
Md. Asaduzzaman
la source
De l'avis: Bonjour, ne répondez pas uniquement avec le code source. Essayez de fournir une belle description du fonctionnement de votre solution. Voir: Comment rédiger une bonne réponse? . Merci
sɐunıɔ ןɐ qɐp