2014-01-20 53 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