从 Android 的 ScrollView 中删除滚动条轨道

Posted

技术标签:

【中文标题】从 Android 的 ScrollView 中删除滚动条轨道【英文标题】:Remove scroll bar track from ScrollView in Android 【发布时间】: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_ 
  android:layout_
  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_
       android:layout_/>  
</ScrollView>

我的目标是平台 2.1 / API lvl 7,实际上只是处理正常尺寸的显示器、mdp、hdp 和 xhdp。

【问题讨论】:

【参考方案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?。谢谢

以上是关于从 Android 的 ScrollView 中删除滚动条轨道的主要内容,如果未能解决你的问题,请参考以下文章

问题解决:MySQL 从复合主键中删几个键

android ScrollView+GridView GridView不滚动

根据微调器项目选择更新 ArrayAdapter

android scrollview嵌套listview 页面有多余空白

滚动视图中的 Android 列表视图

如何从 ScrollView 内的 RecyclerView 中移除焦点?