在Android中从ScrollView移除滚动条轨道


104

我的Android应用程序有一个主要的WebView(从本地资源加载的HTML),我想使用屏幕的整个宽度并能够(垂直)滚动。因此,我已将WebView包装在布局XML中的ScrollView中,但是无论如何我似乎都无法从滚动视图的右侧删除滚动条轨道。更糟糕的是,我似乎无法更改滚动条轨道的背景颜色。

这条轨道大约占用10dp左右,这在WebView中为HTML造成了问题。我希望滚动条显示 Web视图的顶部(iPhone样式,如果您知道我的意思)。现在,您可以说“为什么不将HTML更改为更薄10像素?”,这是我的后备解决方案,但我宁可不必这样做。

这是布局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。

Answers:


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

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中),但是这种方法仍然会干扰ScrollView中WebView的水平大小。最好的解决方案是上面提供的解决方案,只需完全删除ScrollView并允许WebView处理滚动本身。根本问题是我对什么时候才应该使用ScrollView一无所知。也就是说,Android中的每个视图都可以处理滚动。
米克·伯恩

18

我有些困惑,为什么您首先要使用WebViewa ScrollView。A WebView有自己的内置滚动系统。

关于您的实际问题,如果您希望将Scrollbar其显示在顶部,则可以使用

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

是的,您一开始就不需要ScrollView是正确的,我在回到这里之前先解决了这个问题。Web视图上的“ setScrollBarStyle”效果很好,谢谢!
米克·伯恩

不仅不需要,而且ScrollView不能包含可滚动的视图,因此您的WebView仍然不会滚动
一个人

3
不工作 正确的答案是加尔扎德的答案。
Misagh Emamverdi

3
正确的答案在下面,android:scrollbars =“ none”
Araib karim

5

通过添加到我的解决了我的问题ListView

android:scrollbars="none"

4

这些解决方案无法在我的情况与相对布局,如果键盘打开 android:scrollbars="none"android:scrollbarStyle="insideOverlay"也没有工作。

工具栏不见了,我的完成按钮不见了。

不起作用

这个为我工作

myScrollView.setVerticalScrollBarEnabled(false);

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.