从 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
放入ScrollView
。 WebView
有它自己的内置滚动系统。
关于您的实际问题,如果您希望 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 中删除滚动条轨道的主要内容,如果未能解决你的问题,请参考以下文章
android ScrollView+GridView GridView不滚动