当前位置: 首页 > 知识库问答 >
问题:

将ProgressBar添加到WebView片段中

夏季萌
2023-03-14
public class HomeFragment extends Fragment {


private WebView webView;


public HomeFragment() {
    // Required empty public constructor
}

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View mainView = (View) inflater.inflate(R.layout.fragment_my_fragment1, container, false);
    WebView webView = (WebView)mainView.findViewById(R.id.webview);
    webView.setWebViewClient(new MantenerDominioWeb());
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setBuiltInZoomControls(false);
    webView.getSettings().setSupportZoom(false);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.canGoBack();
    webView.goBack();
    webView.loadUrl("http://www.lfcchile.com/");
    return mainView;


}



@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
}

@Override
public void onDestroy() {
    super.onDestroy();
}

@Override
public void onDetach() {
    super.onDetach();
}
}
public class MantenerDominioWeb extends WebViewClient {

private WebView webView;
public ProgressBar progressBarT4;


@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (Uri.parse(url).getHost().endsWith("lfcchile.com") || (Uri.parse(url).getHost().endsWith("thisisanfield.com")) || (Uri.parse(url).getHost().endsWith("liverpoolecho.co.uk")) || (Uri.parse(url).getHost().endsWith("liverpoolfc.com"))) {
        return false;
    }

    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    view.getContext().startActivity(intent);
    return true;
}

}

和我的框架XML

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" tools:context="com.lfcchile.MyFragment1">

<!-- TODO: Update blank fragment layout -->
<TextView android:layout_width="match_parent" android:layout_height="match_parent"
    android:gravity="center"
    android:text="@string/homefrag" />

<WebView
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />

<ProgressBar
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:id="@+id/progressBar1"/>

</FrameLayout>

有什么想法吗?我试图将progressBar放在WebView的“前面”,但是当页面被加载时,图标并没有消失...

共有1个答案

殷德本
2023-03-14

我相信不可能放一个progressbar,因为每个站点都有一定的大小,在完成下载页面之前很难测量它。

但是,您可以在加载页面时放置预加载程序(加载),并在页面结束后删除用户的访问权限。

使用ProgressDialog:

public class HomeFragment extends Fragment {

private ProgressDialog progress;
private WebView webView;


public HomeFragment() {
    // Required empty public constructor
}

@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}



@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View mainView = (View) inflater.inflate(R.layout.fragment_my_fragment1, container, false);
        WebView webView = (WebView)mainView.findViewById(R.id.webview);
        webView.setWebViewClient(new MantenerDominioWeb());
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setBuiltInZoomControls(false);
        webView.getSettings().setSupportZoom(false);
        webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        webView.getSettings().setAllowFileAccess(true);
        webView.getSettings().setDomStorageEnabled(true);
        webView.canGoBack();
        webView.goBack();
        webView.loadUrl("http://www.lfcchile.com/");

        progress = ProgressDialog.show(this, "Aguarde...",
                    "Processando sua solicitação.", true);
        webView.setWebViewClient(new WebViewClient() {

           public void onPageFinished(WebView view, String url) {
                if (progress != null)
                    progress.dismiss();
            }
        });
        return mainView;


    }



@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
}

@Override
public void onDestroy() {
    super.onDestroy();
}

@Override
public void onDetach() {
    super.onDetach();
}
}
 类似资料:
  • 在mainactivity.java中共享操作 请帮忙解决问题。

  • 了解如何将照片添加到 Lightroom 以进行编辑、整理和分享。 将照片添加到 Lightroom 的过程包括几个简单的步骤。 注意:在移动设备上使用 Lightroom?请参阅在 Lightroom for mobile (Android) 中导入照片以及在 Lightroom for mobile (iOS) 中导入照片。 Lightroom 会生成导入的照片的副本,并将全分辨率的原始照片上

  • 本文向大家介绍详解Android WebView加载html片段,包括了详解Android WebView加载html片段的使用技巧和注意事项,需要的朋友参考一下 这里我先简单描述一下需求:服务器返回的是html页面的一部分带有标签的内容。 解决的思路是:将服务器返回的内容片段拼凑成一个完整的页面。 下面直接上核心代码: 这里是WebView一些配置 笔者在Nexus6 7.0上面测试偶尔出现,h

  • 我读到应该重写方法。但是我得到一个错误,不能为重写“shouldoverrideurlloading”。 如果您能给出一个具有progressbar和webView的示例,并在同一个webView中打开新的URL,我将非常高兴。

  • 我正在试验JavaFX,并试图在树表中添加一个进度条。是否有办法将薪资值与进度条联系起来。 我的代码是Oracle的TreeTableView示例的修改版本: 我收到错误在它说

  • 本文向大家介绍android-fragments 添加片段,包括了android-fragments 添加片段的使用技巧和注意事项,需要的朋友参考一下 示例 静态添加片段 文件:activity_main.xml 文件:fragment1.xml 文件:fragment2.xml 文件:MainActivity.java 文件:Fragment1.java 文件:Fragment2.java 动态