ลบแทร็กแถบเลื่อนออกจาก ScrollView ใน Android


104

แอป Android ของฉันมี WebView หลัก (HTML โหลดจากทรัพยากรในเครื่อง) ซึ่งฉันต้องการใช้ความกว้างทั้งหมดของหน้าจอและสามารถเลื่อน (แนวตั้ง) ได้ ดังนั้นฉันจึงรวม WebView ไว้ใน ScrollView ใน XML เค้าโครงของฉัน แต่ไม่ว่าฉันจะทำอย่างไรฉันก็ไม่สามารถลบแทร็กแถบเลื่อนออกจากด้านขวาของมุมมองการเลื่อนได้ ที่แย่ไปกว่านั้นคือฉันไม่สามารถเปลี่ยนสีพื้นหลังของแทร็กแถบเลื่อนได้

แทร็กใช้เวลาประมาณ 10dp หรือมากกว่านั้นซึ่งสร้างปัญหาให้กับ HTML ใน WebView ฉันต้องการให้แถบเลื่อนปรากฏที่ด้านบนของมุมมองเว็บ (สไตล์ iPhone ถ้าคุณรู้ว่าฉันหมายถึงอะไร) ตอนนี้คุณสามารถพูดได้ว่า "ทำไมคุณไม่เปลี่ยน HTML ของคุณให้บางลง 10px" ซึ่งเป็นวิธีแก้ปัญหาสำรองของฉัน แต่ฉันไม่จำเป็นต้องทำ

นี่คือตัวอย่าง XML ของเค้าโครงที่เกี่ยวข้องคุณจะเห็นว่าฉันได้ลองใช้คุณลักษณะ android: etc ทุกตัวที่ฉันพบ:

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

ฉันกำหนดเป้าหมายเป็นแพลตฟอร์ม 2.1 / API lvl 7 จริงๆแค่จัดการกับจอแสดงผลขนาดปกติ, mdp, hdp และ xhdp

คำตอบ:


506

ในการลบแถบเลื่อนออกจากมุมมอง (และคลาสย่อย) ผ่าน xml:

android:scrollbars="none"

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


1
นี่ไม่ใช่สิ่งที่ผู้โพสต์ถาม เขาบอกว่าเขาจะlike the scrollbar to appear on top of the web view content
Sudhanshu

11
ใช้งานได้ แต่คุณจะไม่สามารถเลื่อนหน้าจอได้เมื่อเปิดแป้นพิมพ์
DeltaCap019

4
android: scrollbarThumbVertical = "@ null" เพิ่มสิ่งนี้ใน scrollview หากคุณต้องการให้หน้าจอเลื่อนเมื่อเปิดแป้นพิมพ์ :)
Biswas Khayargoli

29

ลองนี่คือกิจกรรมของคุณ onCreate:

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


ขอบคุณ ... ฉันลองแล้ว (ในโค้ดและใน layout.xml) แต่วิธีนี้ยังคงรบกวนขนาดแนวนอนของ WebView ภายใน ScrollView ทางออกที่ดีที่สุดคือวิธีที่ระบุไว้ข้างต้นเพียงแค่ลบ ScrollView ออกทั้งหมดและปล่อยให้ WebView จัดการการเลื่อนเอง ปัญหารากคือฉันไม่เข้าใจว่าเมื่อใดจึงเหมาะสมที่จะใช้ ScrollView เลย; กล่าวคือทุกมุมมองใน Android สามารถจัดการกับการเลื่อนได้
Mick Byrne

18

ฉันสับสนเล็กน้อยว่าทำไมคุณถึงWebViewเข้ามาเป็นScrollViewที่หนึ่ง A WebViewมีระบบเลื่อนในตัว

เกี่ยวกับคำถามจริงของคุณหากคุณต้องการScrollbarให้แสดงด้านบนคุณสามารถใช้

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

ใช่คุณพูดถูกแล้วว่าไม่ต้องการ ScrollView ตั้งแต่แรกฉันหาข้อมูลด้วยตัวเองก่อนกลับมาตรวจสอบที่นี่ 'setScrollBarStyle' บนมุมมองเว็บทำงานได้ดีขอบคุณ!
Mick Byrne

ไม่เพียง แต่ไม่จำเป็นเท่านั้น ScrollView ไม่สามารถมีมุมมองที่เลื่อนได้ดังนั้น WebView ของคุณจะไม่มีการเลื่อนอีกต่อไป
บุคคล

3
ไม่ทำงาน. คำตอบที่ถูกต้องคือคำตอบของ Garzahd
Misagh Emamverdi

3
คำตอบที่ถูกต้องอยู่ด้านล่าง android: scrollbars = "none"
Araib karim


4

วิธีแก้ปัญหาเหล่านี้ล้มเหลวในกรณีของฉันกับ Relative Layout และหาก KeyBoard เปิดอยู่ android:scrollbars="none"และ android:scrollbarStyle="insideOverlay"ไม่ทำงาน

แถบเครื่องมือหายไปปุ่มเสร็จสิ้นของฉันหายไป

ไม่ทำงาน

อันนี้ทำงานให้ฉัน

myScrollView.setVerticalScrollBarEnabled(false);

2

แก้ไขปัญหาโดยใช้ด้านล่าง

android:scrollbarThumbVertical="@null"

จากรีวิว: สวัสดีโปรดอย่าตอบด้วยซอร์สโค้ด พยายามให้คำอธิบายที่ดีเกี่ยวกับวิธีการทำงานของโซลูชันของคุณ ดู: ฉันจะเขียนคำตอบที่ดีได้อย่างไร? . ขอบคุณ
sɐunıɔןɐqɐp
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.