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 来演示您的 &lt;div&gt; 滚动问题? 示例 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 强制横屏

Android 强制开启 webview debugger 模式

如何获取webView的高度

Android WebView html5 视频强制全屏

强制开启android webview debug模式使用Chrome inspect

当我使用 WebView loadUrl 函数时,Android Studio 应用程序被强制关闭