Usuń ścieżkę paska przewijania z ScrollView w systemie Android

104

Moja aplikacja na Androida ma główny WebView (HTML ładowany z lokalnego zasobu), który chcę wykorzystać na całej szerokości ekranu i mieć możliwość przewijania (w pionie). Więc zawinąłem WebView w ScrollView w moim układzie XML, ale bez względu na to, co robię, nie mogę usunąć ścieżki paska przewijania z prawej strony widoku przewijania. Co gorsza, nie mogę zmienić koloru tła ścieżki paska przewijania.

Ścieżka zajmuje około 10 dp, co stwarza problemy dla HTML w WebView. Chciałbym, aby pasek przewijania pojawił się na górze widoku sieci (w stylu iPhone'a, jeśli wiesz, o co mi chodzi). Teraz możesz powiedzieć „dlaczego nie zmienisz swojego kodu HTML, aby był cieńszy o 10 pikseli?”, Co jest moim rozwiązaniem zastępczym, ale wolałbym nie musieć.

Oto odpowiedni fragment kodu XML układu, zobaczysz, że wypróbowałem każdy atrybut android: etc, jaki udało mi się znaleźć:

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

Celuję w platformę 2.1 / API lvl 7, tak naprawdę zajmuję się tylko wyświetlaczami o normalnym rozmiarze, mdp, hdp i xhdp.

Mick Byrne
źródło

Odpowiedzi:

506

Aby usunąć pasek przewijania z widoku (i jego podklasy) za pośrednictwem XML:

android:scrollbars="none"

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

Garzahd
źródło
1
Nie o to pytał plakat. Powiedział, że taklike the scrollbar to appear on top of the web view content
Sudhanshu
11
Działa, ale nie będzie można przewijać ekranu, gdy klawiatura jest otwarta
DeltaCap019
4
android: scrollbarThumbVertical = "@ null" Dodaj to do scrollview, jeśli chcesz, aby ekran przewijał się, gdy klawiatura jest otwarta :)
Biswas Khayargoli
29

spróbuj to jest Twoja aktywność na Utwórz:

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
źródło
Dzięki ... Próbowałem już tego (w kodzie i w pliku layout.xml), ale to podejście nadal kolidowało z poziomym rozmiarem WebView w ScrollView. Najlepszym rozwiązaniem było to podane powyżej, po prostu całkowicie usuwając ScrollView i umożliwiając WebView obsługę samego przewijania. Głównym problemem był brak zrozumienia, kiedy w ogóle należało użyć ScrollView; tzn. każdy widok w systemie Android może obsługiwać przewijanie.
Mick Byrne
18

Jestem trochę zdezorientowany, dlaczego w pierwszej kolejności umieszczasz a WebVieww a ScrollView. A WebViewma swój własny wbudowany system przewijania.

Jeśli chodzi o twoje rzeczywiste pytanie, jeśli chcesz, Scrollbaraby wyświetlało się na górze, możesz użyć

view.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY) or   
android:scrollbarStyle="insideOverlay"
Christopher Souvey
źródło
Tak, masz rację co do tego, że nie potrzebujesz ScrollView w pierwszej kolejności, opracowałem to sam, zanim wróciłem tutaj. „SetScrollBarStyle” w widoku sieciowym działał świetnie, dzięki!
Mick Byrne
Nie tylko nie jest to potrzebne, ScrollView nie może zawierać przewijalnych widoków, więc Twój WebView i tak by się nie przewinął
Osoba
3
Nie działa. Prawidłowa odpowiedź to odpowiedź Garzahda.
Misagh Emamverdi
3
prawidłowa odpowiedź jest poniżej, android: scrollbars = "none"
Araib karim
5

Rozwiązałem mój problem, dodając to do mojego ListView:

android:scrollbars="none"
Sam
źródło
4

Rozwiązania te nie powiodło się w moim przypadku z względna układ i Jeśli klawiatura jest otwarta android:scrollbars="none"i android:scrollbarStyle="insideOverlay"również nie działa.

zniknął pasek narzędzi, zniknął mój przycisk Gotowe.

nie działa

Ten pracuje dla mnie

myScrollView.setVerticalScrollBarEnabled(false);
VJ Vishal Jogiya
źródło
2

Używając poniżej, rozwiązałem problem

android:scrollbarThumbVertical="@null"
Md. Asaduzzaman
źródło
Z recenzji: Cześć, nie odpowiadaj tylko za pomocą kodu źródłowego. Postaraj się przedstawić miły opis tego, jak działa Twoje rozwiązanie. Zobacz: Jak napisać dobrą odpowiedź? . Dzięki
sɐunıɔ ןɐ qɐp