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.

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


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


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"

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"

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.