Android 在选择选项卡之前加载进度条

Android 在选择选项卡之前加载进度条,android,webview,tabs,progress,Android,Webview,Tabs,Progress,以下是我的选项卡初始化代码: private void initTabs() { serviceTabs.addTab(serviceTabs.newTab().setText("Request Appointment")); serviceTabs.addTab(serviceTabs.newTab().setText("Online Booking")); serviceTabs.addTab(serviceTabs.newTa

以下是我的选项卡初始化代码:

    private void initTabs() {

        serviceTabs.addTab(serviceTabs.newTab().setText("Request Appointment"));
        serviceTabs.addTab(serviceTabs.newTab().setText("Online Booking"));   
        serviceTabs.addTab(serviceTabs.newTab().setText("Feedback"));    
        serviceViewpager.setOffscreenPageLimit(serviceTabs.getTabCount());    
        final ViewPageAdapter adapter = new ViewPageAdapter(getChildFragmentManager(), serviceTabs.getTabCount(),
                mContext);    
        serviceViewpager.setAdapter(adapter);    
        serviceViewpager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(serviceTabs));    
        serviceTabs.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {  
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                serviceViewpager.setCurrentItem(tab.getPosition());
            }   
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                Log.i("", "on tab unselected Service");
            }    
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
                Log.i("", "on tab reselected Service ");
            }
        });
    }

    private class ViewPageAdapter extends FragmentStatePagerAdapter {
        int mNumOfTabs;   
        Context context;    
        ViewPageAdapter(FragmentManager fm, int numOfTabs, Context context) {
            super(fm);
            this.mNumOfTabs = numOfTabs;
            this.context = context;
        }

        @Override
        public Fragment getItem(int position) {    
            switch (position) {   
                case 0:
                    return new CustomizeFragment();    
                case 1:
                    Bundle url = new Bundle();                      url.putString(Constants.WEB_URL,Constants.APPOINTMENT_ONLINE_BOOKING);
                    return WebViewFragment.createInstance(url);

                case 2:
                    return new CustomizeFragment();

                default:
                    return null;
            }
        }   
        @Override
        public int getCount() {
            return mNumOfTabs;
        }
    }   
    @Override
    public void onDestroyView() {
        super.onDestroyView();           
        unbinder.unbind();
    }
我在WebViewFragment中加载进度条,如下所示:

 public static WebViewFragment createInstance(Bundle urlArgs) {
        WebViewFragment webView = new WebViewFragment();
        webView.setArguments(urlArgs);
        return webView;
    }
    @Override
    public View onCreateView(LayoutInflater layoutInflater, ViewGroup container, Bundle saveInstanceState) {
        rootView = layoutInflater.inflate(R.layout.load_web_view, container, false);
        activity = getActivity();
        url=getArguments().getString(Constants.WEB_URL);
        mContext = activity.getApplicationContext();
        serviceAppointmentView = (WebView) rootView.findViewById(R.id.webView);    
        loadData();
        return rootView;
    }   
public void loadData()
{
    serviceAppointmentView.clearView();
    webSettings = serviceAppointmentView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setSupportZoom(true);
    webSettings.setBuiltInZoomControls(true);
    webSettings.setLoadWithOverviewMode(true);
    webSettings.setUseWideViewPort(true);

    progress = new Progress(activity);
    pDialog = progress.showProgress();
    pDialog.setCanceledOnTouchOutside(true);
    serviceAppointmentView.loadUrl(url);
    serviceAppointmentView.setWebViewClient(new 
    DealerWebViewClient());
}
private class DealerWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    {
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        progress.dismissProgress(pDialog);
    }
}

我正在使用在线预订选项卡的自定义进度条。这里的问题是,在我点击在线预订选项卡之前,进度开始加载。请告诉我我在哪里犯了错误,或者如何解决这个问题…感谢您耐心地查看我的代码,任何建议都将对我有所帮助

默认情况下,查看寻呼机将在当前选项卡的右侧和左侧分别加载至少1个和1个。之所以这样做,主要是因为在滑动viewpager时,两个选项卡的某个区域都可见。对于这些平稳过渡,需要预加载

要防止出现这种情况,可以使用此方法
setUserVisibleHint()

如下代码所示:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
 super.setUserVisibleHint(isVisibleToUser);
 if (isVisibleToUser) {
    // load data here
 }else{

 }
}

默认情况下,“查看寻呼机”将在当前选项卡的右侧和左侧选项卡上分别加载至少1个和1个。之所以这样做,主要是因为在滑动viewpager时,两个选项卡的某个区域都可见。对于这些平稳过渡,需要预加载

要防止出现这种情况,可以使用此方法
setUserVisibleHint()

如下代码所示:

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
 super.setUserVisibleHint(isVisibleToUser);
 if (isVisibleToUser) {
    // load data here
 }else{

 }
}

ViewPage的默认值为1,是最小值,不能设置为0

这意味着当您初始化viewpager并添加片段时,当它在位置0处初始化片段时,它也在位置1处初始化片段

在Fragment.class中有一个方法

setUserVisibleHint(boolean)
当片段对用户可见时调用(在viewPager中被选中)

您可以验证它以实现加载进度,并在需要时随时启动。 请记住,之前也会发射它

onCreateView()

您可以检查视图是否已膨胀,检查是否有任何视图不为空。

ViewPage的默认屏幕外页面值为1,它是最小值,您不能将其设置为0

这意味着当您初始化viewpager并添加片段时,当它在位置0处初始化片段时,它也在位置1处初始化片段

在Fragment.class中有一个方法

setUserVisibleHint(boolean)
当片段对用户可见时调用(在viewPager中被选中)

您可以验证它以实现加载进度,并在需要时随时启动。 请记住,之前也会发射它

onCreateView()

您可以检查视图是否已膨胀,检查是否有任何视图不为空。

我希望它能帮助您

当viewpager加载当前片段的相邻片段时,在处理插入progressdialog或其他内容的viewpager时,最好在xml中使用progressbar,如下所示:

<ProgressBar
        android:id="@+id/progressbar"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center_horizontal"
        android:visibility="visible" />

我希望它能帮助你

当viewpager加载当前片段的相邻片段时,在处理插入progressdialog或其他内容的viewpager时,最好在xml中使用progressbar,如下所示:

<ProgressBar
        android:id="@+id/progressbar"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|center_horizontal"
        android:visibility="visible" />

默认情况下,Viewpager可以一次加载三个页面。一个是当前页面,其余的是当前页面的左侧和右侧。因此,如果打开活动,片段的另一侧也会初始化。因此,在
onCreate()下面的片段中过度使用此方法。


当用户可以看到片段时,此函数将调用。默认情况下,Viewpager

可以一次加载三个页面。其中一个页面是当前页面,其余页面是当前页面的左侧和右侧。因此,如果打开活动,片段的对侧也将初始化。因此,在片段中过度使用此方法在您的
onCreate()下面


当用户看到您的片段时,这将调用

,这意味着您的进度条显示在主屏幕中?是…当我点击包含选项卡布局的屏幕时,这意味着您的进度条显示在主屏幕中?是…当我点击包含选项卡布局的屏幕时,我应该在哪里使用setUserVisisbleHint…可以吗详细说明?您应该在正在加载数据的片段中覆盖它。我应该在哪里使用setUserVisisbleHint…您可以详细说明吗?您应该在正在加载数据的片段中覆盖它。它不会显示,因为它已经加载了。。当您转到当前片段时,它总是在其左侧加载一个片段,在其右侧加载一个片段。您可以在此处获得更多信息,但由于已加载,因此未显示。。当您转到当前片段时,它总是在其左侧加载一个片段,在其右侧加载一个片段。你可以在这里获得更多信息