2014-01-20 24 views
1

我有一个使用片段的应用程序。其中一个片段是一个显示本地生成的html内容的WebView。它可以有不同的大小,但不能太大(1-30kb)。当用户单击一个片段上的按钮(让它成为FragmentA)时,我需要使用该WebView片段(FragmentB)对其进行更改。webren内容的预渲染和预编辑

How is it going now: 
1. Instaniate FragmentB 
2. replace FragmentA with FragmentB (user sees blank white screen) 
3. FragmentB loads generated html, render it (user sees top of html) 
4. Page scrolls down with webView.pageDown(true) (calling it from opPageFinished()) (user sees scrolling animation to the bottom of the page) 

How i want it to be: 
1. Instaniate FragmentB 
2. set it to some invisible container (user still have FragmentA on the screen) 
3. it renders html, scrolls it down (same) 
4. when page is ready, rendered and scrolled down I hide FragmentA and show FragmentB 

任何建议如何才能实现这一目标? 我尝试了我描述的第二个算法,但它看起来像WebView不想呈现和/或滚动内容直到片段对用户可见的问题。

+0

我面临着和你一样的问题。当实例化fragmentB并加载url时,您可以创建加载微调器。然后使用WebViewClient.onPageFinished回调来隐藏微调器并显示Web视图。我应该说你仍然会快速浏览一个空白页面,但比没有微调的人更容易接受。 –

回答

0

好的,我想出了自己。答案很简单。 我将FragmentA和FragmentB放在FrameLayout中,以便FragmentA在FragmentB的“顶部”。所以当我需要展示B时,我只是隐藏答案。就是这样。 B总是“可见的”,并且可以将其内容在背后渲染为A.

0

当用户按下Fragment A中的按钮后,我立即切换到Fragment B。

片段B将包含您的webview,以及与webview重叠以隐藏它的内容。它可以是任何东西,甚至是一个简单的图像,或一个加载动画。在onPageFinished()中,您应该调用WebView.pageDown(true),并隐藏重叠图层以显示webview。

+0

想法是继续显示片段A,直到片段B将完全准备好,呈现并向下滚动。不要在两者之间显示动画。 – Dimanoid