Как создать Progresbar в веб-андроид - PullRequest
0 голосов
/ 24 марта 2019

Я перепробовал много методов, но не работает, все, что я хочу сделать, это показать индикатор выполнения при загрузке веб-страницы. Пожалуйста, помогите мне вот мой код MainActivity.Java

package com.krishnakingofrestoration.progress;

 import android.app.Activity;
 import android.graphics.Bitmap;
 import android.os.Bundle;
 import android.view.View;
 import android.webkit.WebView;
 import android.widget.ProgressBar;


 public class MainActivity extends Activity {

WebView webview;
ProgressBar pbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    webview = (WebView)findViewById(R.id.webview);
    pbar = (ProgressBar)findViewById(R.id.progressBar2);
    webview.setWebViewClient(new WebViewClient());
    webview.loadUrl("http://www.google.com");
}

public class WebViewClient extends android.webkit.WebViewClient
{
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {

        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        // TODO Auto-generated method stub
        view.loadUrl(url);
        return true;
    }
    @Override
    public void onPageFinished(WebView view, String url) {

        // TODO Auto-generated method stub

        super.onPageFinished(view, url);
        pbar.setVisibility(View.GONE);

    }

}

@Override
public void onBackPressed() {
    if (webview.canGoBack()){
        webview.goBack();
    }
    else {
        super.onBackPressed();
    }
}

activity_main.xml

      <RelativeLayout 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=".MainActivity" >

<ProgressBar
    android:id="@+id/progressBar2"
    style="?android:attr/progressBarStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="217dp" />

<WebView
    android:id="@+id/webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="0dp" />
  </RelativeLayout>

Не работает Я использую Android Studio 3.2.1 и Android Marshmallow 6.0 Пожалуйста, помогите мне Gradle 4.1.2 Это мой полный кодЯ думаю, что вы мне поможете, и я хочу, чтобы индикатор прогресса круга прошёл, дайте мне правильный ответ

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

Сначала поменяйте местами порядок WebView и ProgressBar в xml, как показано ниже:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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=".MainActivity" >

   <WebView
    android:id="@+id/webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="0dp" />
   <ProgressBar
    android:id="@+id/progressBar2"
    style="?android:attr/progressBarStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="217dp"/>
</RelativeLayout>

Код в файле Java:

public class MainActivity extends AppCompatActivity {
WebView webview;
ProgressBar pbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    webview = findViewById(R.id.webview);
    pbar = findViewById(R.id.progressBar2);
    webview.setWebViewClient(new WebViewClient() {
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            pbar.setVisibility(View.VISIBLE);
        }
        public void onPageFinished(WebView view, String url) {

            super.onPageFinished(view, url);
            pbar.setVisibility(View.GONE);
        }
        public void onReceivedError(WebView view, int errorCode,
                                    String description, String failingUrl) {
            super.onReceivedError(view, errorCode, description, failingUrl);
            Toast.makeText(MainActivity.this,
                    "The Requested Page Does Not Exist", Toast.LENGTH_LONG).show();
            webview.loadUrl("https://www.google.com");
        }
    });
    webview.loadUrl("https://www.google.com");
    webview.getSettings().setLoadWithOverviewMode(true);
    webview.getSettings().setUseWideViewPort(true);
    webview.getSettings().setJavaScriptEnabled(true);
}
@Override
public void onBackPressed() {
    if (webview.canGoBack()){
        webview.goBack();
    }
    else {
        super.onBackPressed();
    }
  }
}

Я надеюсь, что это работает для вас.

0 голосов
/ 24 марта 2019

Ваш ProgressBar в настоящее время скрыт под вашим WebView.Просто измените порядок в вашем .xml файле

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...