Android:强制 WebView 到某个高度(或触发 div 的滚动)
Posted
技术标签:
【中文标题】Android:强制 WebView 到某个高度(或触发 div 的滚动)【英文标题】:Android: Forcing a WebView to a certain height (or triggering scrolling for a div) 【发布时间】:2011-01-17 07:27:01 【问题描述】:我正在构建一个包含输入表单和 WebView 的应用程序。 该项目可通过http://code.google.com/p/android-sap-note-viewer/获得
WebView 将根据输入呈现一个网站,该页面有一个包含主要内容的 DIV(可能是数百行)。我无法控制网站上的内容。
Android WebKit 似乎没有在 DIV 中进行任何滚动,参考 http://www.gregbugaj.com/?p=147。因此,只有部分 DIV 显示给用户,没有检索其余文本的方法。 我的挑战是找到一种显示所有 DIV 文本的方式。
我的观点定义如下:
<LinearLayout android:orientation="horizontal"
android:layout_
android:layout_>
<TextView android:layout_
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_
android:text="@string/lblNote" />
<EditText android:id="@+id/txtNote"
android:layout_
android:layout_
android:layout_weight="1"
android:numeric="decimal"
android:maxLength="10"
/>
<Button android:id="@+id/bView"
android:text="@string/bView"
android:layout_
android:layout_
/>
</LinearLayout>
<WebView
android:id="@+id/webview"
android:layout_
android:layout_
android:isScrollContainer="false"
android:keepScreenOn="false"
android:minHeight="4096px"
/>
</LinearLayout>
在这里,我尝试将 WebView 硬编码为较大的高度,以确保 DIV 被拉伸并显示所有文本,并强制 LinearLayout 进行滚动。
但是,WebView 总是适应屏幕尺寸(在大多数情况下这会很好,但不是这样)。
关于如何解决这个问题的任何想法?
(我现在看到的唯一解决方案是自己获取 html,删除 DIV 并将其发送到 WebView)
【问题讨论】:
您能否提供(或模拟)一些 HTML 来演示您的<div>
滚动问题?
示例 HTML 可从 dropbox dl.dropbox.com/u/4379928/note_example.html 获得 主 div 以 开头
最终在将 div 的样式传递给 WebView 之前动态重写了它的样式
【参考方案1】:
我认为您想为此使用权重。我对你的 xml 代码有点困惑,因为你有一个额外的 LinearLayout 标签,但我认为你正在寻找这样的东西:
<LinearLayout
android:layout_
android:layout_
android: orientation="vertical">
<LinearLayout android:orientation="horizontal"
android:layout_
android:layout_>
<TextView android:layout_
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_
android:text="@string/lblNote" />
<EditText android:id="@+id/txtNote"
android:layout_
android:layout_
android:layout_weight="1"
android:numeric="decimal"
android:maxLength="10"
/>
<Button android:id="@+id/bView"
android:text="@string/bView"
android:layout_
android:layout_
/>
</LinearLayout>
<WebView
android:id="@+id/webview"
android:layout_
android:layout_
android:layout_weight="1"/>
</LinearLayout>
这里 Webview 将填充内部 LinearLayout 不使用的屏幕的其余部分,因为只有 webview 具有 weight 属性。希望这会有所帮助。
【讨论】:
【参考方案2】:我认为,您可以在 LinearLayout 之外放置一个 ScrollView
【讨论】:
将尝试返回结果以上是关于Android:强制 WebView 到某个高度(或触发 div 的滚动)的主要内容,如果未能解决你的问题,请参考以下文章
Android 强制开启 webview debugger 模式