当我在ViewPager中打开一个页面时,它会实例化相邻的页面。我想要实现的是
1.仅在页面聚焦时才将页面内容加载到页面上。
2.显示加载屏幕,同时我填充焦点上的页面布局,然后用页面布局替换加载屏幕。
有人能指出我正确的方向来实现这两个功能吗?
答案 0 :(得分:3)
我不确定解决你的第一个问题的好方法(我不相信你可以控制哪些页面被加载,以及以哪种方式加载),但我有一些可以帮助你的第二个问题:
以下是我创建的视图示例,该视图在我的ViewPager的每个视图中加载:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center">
<LinearLayout
android:id="@+id/loading_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ProgressBar
style="@style/GenericProgressIndicator"/>
<TextView
android:id="@+id/loading_message_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/loading_message_text"/>
</LinearLayout>
<WebView
android:id="@+id/webview"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:fadingEdge="vertical"
android:visibility="gone"
/>
</RelativeLayout>
RelativeLayout中嵌套了两个元素:一个表示我的加载消息的LinearLayout(包括一个ProgressBar和一个TextView)和一个WebView,它将在加载后保存我的内容。 WebView最初将其可见性设置为GONE以完全隐藏它。在代码中,我膨胀视图并启动AsyncTask来加载我的数据。加载数据后,我将LinearLayout的可见性设置为GONE,并将WebView的可见性设置为VISIBLE。
我的AsyncTask中的onPostExecute - 加载数据后,隐藏加载消息并显示数据
protected void onPostExecute(Void v)
{
LinearLayout loadingMessage = (LinearLayout)articleLayout.findViewById(R.loading_message);
WebView articleContent = (WebView)articleLayout.findViewById(R.id.webview);
[...]
loadingMessage.setVisibility(View.GONE);
articleContent.setVisibility(View.VISIBLE);
}