【问题标题】:Remove scroll bar track from ScrollView in Android从 Android 的 ScrollView 中删除滚动条轨道
【发布时间】:2011-09-10 12:40:16
【问题描述】:

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

轨道占用大约 10dp 左右,这给 WebView 中的 HTML 带来了问题。我希望滚动条出现在网络视图的顶部(iPhone 风格,如果你明白我的意思的话)。现在,您可以说“为什么不将您的 HTML 更改为 10 像素?”,这是我的后备解决方案,但我宁愿不必这样做。

这是布局 XML 的相关 sn-p,你会看到我已经尝试了我能找到的每个 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。

【问题讨论】:

    标签: android android-layout scrollview android-scrollbar


    【解决方案1】:

    通过 xml 从视图(及其子类)中移除滚动条:

    android:scrollbars="none"
    

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

    【讨论】:

    • 这不是发帖者提出的问题。他说他会like the scrollbar to appear on top of the web view content
    • 它可以工作,但是当键盘打开时你将无法滚动屏幕
    • android:scrollbarThumbVertical="@null" 如果您希望屏幕在键盘打开时滚动,请在滚动视图上添加:)
    【解决方案2】:

    试试这是你的 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 中的每个视图都可以处理滚动。
    【解决方案3】:

    我有点困惑,为什么您首先将WebView 放入ScrollViewWebView 有它自己的内置滚动系统。

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

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

    【讨论】:

    • 是的,你说得对,一开始就不需要 ScrollView,我在返回这里之前自己解决了这个问题。网络视图上的“setScrollBarStyle”非常有用,谢谢!
    • 不仅不需要,而且 ScrollView 不能包含可滚动视图,因此您的 WebView 无论如何都不会滚动
    • 不工作。正确答案是 Garzahd 的答案。
    • 正确答案如下,android:scrollbars="none"
    【解决方案4】:

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

    android:scrollbars="none"
    

    【讨论】:

      【解决方案5】:

      在我的情况下,这些解决方案在相对布局和如果键盘打开时失败 android:scrollbars="none" & android:scrollbarStyle="insideOverlay" 也不起作用。

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

      这个是为我工作的

      myScrollView.setVerticalScrollBarEnabled(false);
      

      【讨论】:

        【解决方案6】:

        通过下面的使用,问题解决了

        android:scrollbarThumbVertical="@null"
        

        【讨论】:

        • 点评来源: 您好,请不要只回答源代码。尝试对您的解决方案如何工作提供一个很好的描述。见:How do I write a good answer?。谢谢
        猜你喜欢
        • 2012-02-13
        • 2014-01-10
        • 1970-01-01
        • 2018-11-23
        • 2011-04-13
        • 2023-03-14
        • 2012-04-22
        • 2013-10-25
        • 1970-01-01
        相关资源
        最近更新 更多