5

我读过的所有内容(在制作我的应用程序之后:()都说“你永远不应该在 ScrollView 中使用 WebView!”。这是可以理解的,因为理论上你可以有 2 个滚动的东西,这会产生奇怪的可用性。

但是 - 到目前为止,我没有看到任何不利影响。再说一次,我使用的每个 WebView 都不需要滚动——也许这使得它可以接受——即使它在技术上是错误的?

由于缺乏对特定版本的测试,是否有我没有注意到的不利影响?

如果我不能在 ScrollView 中使用 WebView,我将如何获得以下布局(我当前的应用程序):

LinearLayout
    ScrollView
        LinearLayout
            TextView //Title of article
            TextView //Subtitle of article
            RelativeLayout
                ImageView //Large Image (clickable to gallery)
                ImageView //"more photos icon"
            WebView // a small horizontal ad
            TextView // actual article text
            WebView //embedded HTML code ranging from iframe to video...etc
            WebView //embedded HTML code ranging from iframe to video...etc
            WebView // a small horizontal ad
            LinearLayout
                TextView //DB-driven "similar articles" list
            WebView //disqus comments

注意:我意识到这是“错误的”——但<center>在 HTML 中使用标签也是如此,人们仍然一直有效地使用它们。不同之处似乎在于有一个简单且更好的替代方案<center>- Android 中的这种情况是否有类似的东西?获得上述内容的一种简单方法?

4

4 回答 4

4

这是可以理解的,因为理论上你可以有 2 个滚动的东西,这会产生奇怪的可用性。

更具体地说,ScrollView它就像一盒石头一样愚蠢,并假设它可以完全控制滚动。

再说一次,我使用的每个 WebView 都不需要滚动

更准确地说,它不需要在您测试过的设备上滚动,也不需要滚动您测试过的内容。

例如,DISQUS 评论线程通常需要在桌面浏览器上滚动。可以想象,会有足够长的评论线程需要在移动设备上滚动,除非有可以使用的无滚动 DISQUS 嵌入。

如果我不能在 ScrollView 中使用 WebView,我将如何获得以下布局(我当前的应用程序):

摆脱一切并拥有一个WebView生成的 HTML 内容,其中包含当前结构中的所有内容。IOW,做你在网站上会做的事情。

于 2013-01-23T00:33:22.653 回答
0

只要 WebView 不能在与 ScrollView 相同的方向上在内部滚动,将 WebView 放置在 ScrollView 中就可以工作。使 WebView 在内部不滚动可以通过以下几种方式实现:

  • WebView 的高度(假设 ScrollView 可以垂直滚动)是 WRAP_CONTENT,
  • WebView 具有固定大小,并且内容具有永远不会大于视口的反应式布局(或者可以使用“溢出:隐藏”)。

我认为上述方法不能很好地与捏缩放混合,所以你最好不要启用它。

于 2013-11-11T01:15:47.427 回答
0

不要使用 Web 视图。您可以附加到应用程序或使用 AdMob 的广告。视频是 VideoView。评论 webview 的替代方法是制作 api(使用 php [POST] 和 sql)。使用 webview 不是强制性的。我希望我有所帮助

于 2013-01-21T18:37:42.090 回答
0

创建一个 Java 类并使用 WebView 扩展

package com.mypackage.common.custom.android.widgets

public class TouchyWebView extends WebView {

     public TouchyWebView(Context context) {
        super(context);
     }

    public TouchyWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

  public TouchyWebView(Context context, AttributeSet attrs, int defStyle) {
     super(context, attrs, defStyle);
  }

  @Override
  public boolean onTouchEvent(MotionEvent event){
     requestDisallowInterceptTouchEvent(true);
     return super.onTouchEvent(event);
  }          
}

并在布局

<com.mypackage.common.custom.android.widgets
      android:id="@+id/webView"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

我希望这能解决你的问题

于 2018-04-19T12:30:18.430 回答