Entfernen Sie die Spur der Bildlaufleiste aus ScrollView in Android

104

Meine Android-App verfügt über ein Haupt-WebView (HTML, das von einer lokalen Ressource geladen wurde), das ich über die gesamte Bildschirmbreite nutzen und (vertikal) scrollbar machen möchte. Ich habe die WebView in eine ScrollView in meinem Layout-XML eingeschlossen, aber egal was ich tue, ich kann die Spur der Bildlaufleiste anscheinend nicht von der rechten Seite der Bildlaufansicht entfernen. Schlimmer noch, ich kann anscheinend die Hintergrundfarbe der Bildlaufleisten-Spur nicht ändern.

Der Track nimmt ungefähr 10 dp auf, was zu Problemen für den HTML-Code in der WebView führt. Ich möchte, dass die Bildlaufleiste oben in der Webansicht angezeigt wird (iPhone-Stil, wenn Sie wissen, was ich meine). Jetzt könnten Sie sagen: "Warum ändern Sie Ihr HTML nicht so, dass es 10 Pixel dünner ist?", Was meine Fallback-Lösung ist, aber ich möchte es lieber nicht.

Hier ist der relevante Ausschnitt aus Layout-XML. Sie werden sehen, dass ich jedes android: etc-Attribut ausprobiert habe, das ich finden konnte:

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

Ich ziele auf Plattform 2.1 / API Level 7 ab und beschäftige mich wirklich nur mit normal großen Displays, MDP, HDP und XHDP.

Mick Byrne
quelle

Antworten:

506

So entfernen Sie eine Bildlaufleiste aus einer Ansicht (und ihrer Unterklasse) über XML:

android:scrollbars="none"

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

Garzahd
quelle
1
Dies ist nicht das, was das Fragenplakat stellte. Er sagte, er würdelike the scrollbar to appear on top of the web view content
Sudhanshu
11
Es funktioniert, aber Sie können nicht auf dem Bildschirm scrollen, wenn die Tastatur geöffnet ist
DeltaCap019
4
android: scrollbarThumbVertical = "@ null" Fügen Sie dies in der Bildlaufansicht hinzu, wenn Ihr Bildschirm bei geöffneter Tastatur
gescrollt werden soll
29

Versuchen Sie, dies ist Ihre Aktivität bei Create:

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
quelle
Danke ... Ich hatte es bereits versucht (im Code und in der layout.xml), aber dieser Ansatz beeinträchtigte immer noch die horizontale Größe der WebView in der ScrollView. Die beste Lösung war die oben bereitgestellte, bei der nur die ScrollView vollständig entfernt wurde und die WebView das Scrollen selbst durchführen konnte. Das Hauptproblem war mein Unverständnis darüber, wann es angemessen war, überhaupt eine ScrollView zu verwenden. dh jede Ansicht in Android kann mit dem Scrollen umgehen.
Mick Byrne
18

Ich bin ein wenig verwirrt, warum Sie überhaupt ein WebViewin ein ScrollViewsetzen. A WebViewhat ein eigenes eingebautes Bildlaufsystem.

In Bezug auf Ihre eigentliche Frage können Sie verwenden, wenn die Scrollbaroben angezeigt werden soll

view.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY) or   
android:scrollbarStyle="insideOverlay"
Christopher Souvey
quelle
Ja, Sie haben Recht damit, dass Sie ScrollView überhaupt nicht benötigen. Ich habe das selbst herausgefunden, bevor ich hierher zurückgekommen bin. Der 'setScrollBarStyle' in der Webansicht war ein Vergnügen, danke!
Mick Byrne
Es wird nicht nur nicht benötigt, eine ScrollView kann auch keine scrollbaren Ansichten enthalten, sodass Ihre WebView ohnehin nicht gescrollt hätte
A Person
3
Funktioniert nicht. Die richtige Antwort ist Garzahds Antwort.
Misagh Emamverdi
3
Die richtige Antwort ist unten, Android: Scrollbars = "keine"
Araib Karim
5

Ich habe mein Problem gelöst, indem ich Folgendes zu meinem hinzugefügt habe ListView:

android:scrollbars="none"
Sam
quelle
4

Diese Lösungen sind in meinem Fall mit dem relativen Layout fehlgeschlagen und wenn KeyBoard geöffnet ist android:scrollbars="none"und android:scrollbarStyle="insideOverlay"auch nicht funktioniert.

Die Symbolleiste ist weg, meine Schaltfläche Fertig ist weg.

funktioniert nicht

Dieser arbeitet für mich

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

Durch die Verwendung von unten wurde das Problem gelöst

android:scrollbarThumbVertical="@null"
Md. Asaduzzaman
quelle
Aus der Bewertung: Hallo, bitte antworten Sie nicht nur mit dem Quellcode. Versuchen Sie, eine schöne Beschreibung der Funktionsweise Ihrer Lösung zu geben. Siehe: Wie schreibe ich eine gute Antwort? . Danke
sɐunıɔ ןɐ qɐp