Hapus track scroll bar dari ScrollView di Android

104

Aplikasi Android saya memiliki WebView utama (HTML dimuat dari sumber daya lokal) yang ingin saya gunakan untuk seluruh lebar layar dan dapat membuat (secara vertikal) dapat digulir. Jadi saya telah membungkus WebView dalam ScrollView dalam XML tata letak saya, tetapi apa pun yang saya lakukan, saya sepertinya tidak dapat menghapus track scroll bar dari sisi kanan tampilan scroll. Lebih buruk lagi, saya sepertinya tidak bisa mengubah warna latar belakang trek bilah gulir.

Trek tersebut membutuhkan waktu sekitar 10dp atau lebih, yang menimbulkan masalah untuk HTML di WebView. Saya ingin bilah gulir muncul di atas tampilan web (gaya iPhone, jika Anda mengerti maksud saya). Sekarang, Anda dapat mengatakan "mengapa Anda tidak mengubah HTML Anda menjadi 10px lebih tipis?", Yang merupakan solusi fallback saya, tetapi saya lebih suka tidak perlu melakukannya.

Berikut potongan yang relevan dari layout XML, Anda akan melihat saya telah mencoba setiap atribut android: etc yang dapat saya temukan:

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

Saya menargetkan platform 2.1 / API lvl 7, benar-benar hanya berurusan dengan tampilan ukuran normal, mdp, hdp dan xhdp.

Mick Byrne
sumber

Jawaban:

506

Untuk menghapus scrollbar dari tampilan (dan subkelasnya) melalui xml:

android:scrollbars="none"

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

Garzahd
sumber
1
Ini bukanlah pertanyaan yang diajukan oleh poster pertanyaan. Dia bilang dia akanlike the scrollbar to appear on top of the web view content
Sudhanshu
11
Ini berfungsi tetapi Anda tidak akan dapat menggulir layar saat keyboard terbuka
DeltaCap019
4
android: scrollbarThumbVertical = "@ null" Tambahkan ini di scrollview jika Anda ingin layar Anda menggulir saat keyboard terbuka :)
Biswas Khayargoli
29

coba ini aktivitas Anda diCreate:

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.dll
sumber
Terima kasih ... Saya sudah mencobanya (dalam kode dan layout.xml), tetapi pendekatan ini masih mengganggu ukuran horizontal WebView dalam ScrollView. Solusi terbaik adalah yang disediakan di atas, hanya menghapus ScrollView sama sekali dan mengizinkan WebView menangani scrolling itu sendiri. Akar masalah adalah kurangnya pemahaman saya tentang bagaimana saat yang tepat untuk menggunakan ScrollView; yaitu, setiap tampilan di Android dapat menangani pengguliran.
Mick Byrne
18

Saya agak bingung mengapa Anda memasukkan WebViewa ScrollViewdi tempat pertama. A WebViewmemiliki sistem gulir bawaannya sendiri.

Mengenai pertanyaan Anda yang sebenarnya, jika Anda ingin Scrollbartampil di atas, Anda dapat menggunakan

view.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY) or   
android:scrollbarStyle="insideOverlay"
Christopher Souvey
sumber
Ya, Anda benar tentang tidak membutuhkan ScrollView sejak awal, saya mengerjakannya sendiri sebelum memeriksa kembali di sini. 'SetScrollBarStyle' di tampilan web bekerja dengan sangat baik, terima kasih!
Mick Byrne
Tidak hanya itu tidak diperlukan, ScrollView tidak dapat berisi tampilan yang dapat digulir, jadi WebView Anda tidak akan tetap menggulir
Orang
3
Tidak bekerja. Jawaban yang benar adalah jawaban Garzahd.
Misagh Emamverdi
3
jawaban yang benar ada di bawah, android: scrollbars = "none"
Araib karim
5

Memecahkan masalah saya dengan menambahkan ini ke saya ListView:

android:scrollbars="none"
Sam
sumber
4

Solusi ini Gagal dalam kasus saya dengan Tata Letak Relatif dan Jika Papan Tombol Terbuka android:scrollbars="none"& android:scrollbarStyle="insideOverlay"juga tidak berfungsi.

toolbar hilang, tombol selesai saya hilang.

tidak Bekerja

Yang ini Bekerja untuk saya

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

Dengan menggunakan di bawah ini, memecahkan masalah

android:scrollbarThumbVertical="@null"
Md. Asaduzzaman
sumber
Dari Ulasan: Hai, tolong jangan jawab hanya dengan kode sumber. Cobalah untuk memberikan gambaran yang bagus tentang bagaimana solusi Anda bekerja. Lihat: Bagaimana cara menulis jawaban yang baik? . Terima kasih
sɐunıɔ ןɐ qɐp