Rimuovi la traccia della barra di scorrimento da ScrollView in Android


104

La mia app Android ha una WebView principale (HTML caricato da una risorsa locale) che voglio utilizzare per tutta la larghezza dello schermo e poter rendere scorrevole (verticalmente). Quindi ho inserito la WebView in una ScrollView nel mio layout XML, ma non importa quello che faccio, non riesco a rimuovere la traccia della barra di scorrimento dal lato destro della visualizzazione a scorrimento. Ancora peggio, non riesco a cambiare il colore di sfondo della traccia della barra di scorrimento.

La traccia occupa circa 10dp o giù di lì, il che sta creando problemi per l'HTML nella WebView. Vorrei che la barra di scorrimento appaia in cima alla visualizzazione Web (stile iPhone, se sai cosa intendo). Ora, potresti dire "perché non cambi il tuo HTML per renderlo più sottile di 10px?", Che è la mia soluzione di riserva, ma preferirei di gran lunga non doverlo fare.

Ecco lo snippet pertinente del layout XML, vedrai che ho provato tutti gli attributi android: ecc che ho trovato:

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

Sto prendendo di mira la piattaforma 2.1 / API lvl 7, che si occupa solo di display di dimensioni normali, mdp, hdp e xhdp.

Risposte:


506

Per rimuovere una barra di scorrimento da una vista (e dalla sua sottoclasse) tramite xml:

android:scrollbars="none"

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


1
Questo non è ciò che ha chiesto il poster della domanda. Ha detto che l'avrebbe fattolike the scrollbar to appear on top of the web view content
Sudhanshu

11
Funziona ma non sarai in grado di scorrere lo schermo quando la tastiera è aperta
DeltaCap019

4
android: scrollbarThumbVertical = "@ null" Aggiungi questo su scrollview se vuoi che lo schermo scorra quando la tastiera è aperta :)
Biswas Khayargoli

29

prova questa è la tua attività su Crea:

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


Grazie ... l'avevo già provato (nel codice e nel layout.xml), ma questo approccio ha comunque interferito con la dimensione orizzontale del WebView all'interno di ScrollView. La soluzione migliore era quella fornita sopra, rimuovendo del tutto ScrollView e consentendo a WebView di gestire lo scorrimento stesso. Il problema principale era la mia mancanza di comprensione di come quando fosse appropriato usare uno ScrollView; cioè ogni vista in Android può gestire lo scorrimento.
Mick Byrne

18

Sono un po 'confuso sul motivo per cui stai mettendo un WebViewin un ScrollViewin primo luogo. A WebViewha il proprio sistema di scorrimento integrato.

Per quanto riguarda la tua domanda effettiva, se vuoi Scrollbarche appaia in cima, puoi usare

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

Sì, hai ragione sul non aver bisogno di ScrollView in primo luogo, l'ho capito da solo prima di ricontrollare qui. Il "setScrollBarStyle" nella visualizzazione Web ha funzionato a meraviglia, grazie!
Mick Byrne

Non solo non è necessario, una ScrollView non può contenere visualizzazioni scorrevoli, quindi la tua WebView non avrebbe comunque fatto scorrere
A Person

3
Non funziona. La risposta corretta è la risposta di Garzahd.
Misagh Emamverdi

3
la risposta corretta è di seguito, android: scrollbars = "none"
Araib karim

5

Ho risolto il mio problema aggiungendo questo al mio ListView:

android:scrollbars="none"

4

Queste soluzioni non sono riuscite nel mio caso con layout relativo e se KeyBoard è aperto android:scrollbars="none"e android:scrollbarStyle="insideOverlay"anche non funziona.

La barra degli strumenti è andata, il mio pulsante Fine è andato.

non funziona

Questo sta lavorando per me

myScrollView.setVerticalScrollBarEnabled(false);

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.