【问题标题】:Why Android WebView blink on HorizontalScrollView?为什么 Android WebView 在 Horizo​​ntalScrollView 上闪烁?
【发布时间】:2012-11-03 19:37:36
【问题描述】:

我必须编写具有可垂直滚动的磁贴行的应用程序以及所有这些 行水平滚动。每个图块都是 html+javascript 内容。 所以我在 Horizo​​ntalScrollView 和里面添加了多个 ListView ListView 的BaseAdapter Iam 绑定WebView 的getView 方法。 这是一个简单的方案:

HorizintalScrollView
  LinearLayout
      ListView1 -   WebView1 WebView2.....WebView6    //getView {    WebView.LoadUrl(html)  }  //using with ViewHolder and convertView asking for null
       ...
      ListViewN - WebView....WebView
   /LinearLayout
/HorizontalScrollview

每个 WebView 都在 linearLayout 之内。 所以这一切看起来都很好并且可以工作,但是当 ListView 每个包含超过 5 个 WebView 时(300 x 300 dip) 当我尝试水平滚动时,Horizo​​ntalScrollView 上还有一个以上的 ListView,所有 WebView 开始闪烁(如重新加载但没有 getView)。

但是当我使用一个 ListView 时一切正常。从某些时候应用程序崩溃。那么是什么原因呢?? (在每个 WebViw 中,我都展示了简单的交互式高亮 html+javascripts 图表)。我正在尝试使用 ICS 4.0 的华硕平板电脑 我们尝试在 iOS 上通过 ScrollView 上的 30 个 WebView 执行此操作,没有任何问题,一切正常! 请解释为什么闪烁和崩溃的应用程序。

【问题讨论】:

  • 当我尝试水平滚动时,为什么 WebView 会闪烁?当我垂直滚动一个具有 50 个 WebView 的 ListView 时,一切正常且不闪烁。

标签: android webview android-listview android-webview horizontalscrollview


【解决方案1】:

我也遇到了同样的问题。我试过这在更大程度上解决了我的问题

public View getView(final int position, View convertView,
            ViewGroup parent) {

        final ViewHolder holder;
        View vi = convertView;
        if (convertView == null) {
            vi = inflater.inflate(R.layout.book_reader_list_style, parent,
                    false);
            holder = new ViewHolder();

            holder.webView = (WebView) vi.findViewById(R.id.webView1);

            holder.webView.setInitialScale(scaleWebView);
            WebSettings webSettings = holder.webView.getSettings();
            holder.webView.setVerticalScrollBarEnabled(false);
            holder.webView.setHorizontalScrollBarEnabled(false);
            holder.webView.setVisibility(View.VISIBLE);
            webSettings.setLoadWithOverviewMode(true);
            webSettings.setUseWideViewPort(false);

            vi.setTag(holder);
        } else {

            holder = (ViewHolder) vi.getTag();
        }
        holder.webView.loadUrl((URLs.get(position)));

        return vi;

    }

【讨论】:

    猜你喜欢
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2018-06-20
    • 2011-10-18
    • 2014-02-13
    相关资源
    最近更新 更多