为什么Android WebView会在Horizo​​ntalScrollView上闪烁?

时间:2012-11-03 19:37:36

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

我必须编写具有垂直可滚动行的tile和所有这些的应用程序 行水平可见。每个磁贴都是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个WebViews执行此操作,没有任何问题,一切正常! 请解释为什么眨眼和崩溃应用程序。

1 个答案:

答案 0 :(得分: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;

    }