2011-11-16 1 views
1

どのようなURLからデータをロードし終えたら、webviewのスクロールを防ぐ方法を知りたいのですが。たとえば、私はwebviewのhttp://stackoverflow.comからデータをロードしています。データの読み込み(静止画の読み込みが完了していない)のときは、スクロールしてwebviewでテキストを表示します。突然、Webviewは自動的にスクロールアップします。これは、データのロードが終了したためです。では、これを修正する方法。データがアンドロイドで読み込まれたときにWebviewのスクロールを防止する方法

P/S:Webviewのスクロールを無効にしてから、scrollviewをwebviewの外に置いて問題を解決できる方法があります。しかし、データが変更されたときに、画面の最後までスクロールすると、webviewまたはscrollviewの高さ(スクロールビューの高さは変わらない)が変わらないという新しい問題があります。それは私のアプリの底に大きなスペースを持っています。私はそれを修正することはできません。

+0

多分あなたは、ページの読み込み仕上げまでのWebViewと対話するためにユーザを防ぐために、プログレスバーを使用することができます。 – xDragonZ

+1

ありがとうございます。しかし、進行ダイアログを使用すると、人々は私のアプリが遅いと感じるようになります。私の意見では、ページのテキストはイメージの読み込み中に読み込みを終了しました。進捗ダイアログを使用している場合、人々は画像のロードが完了するのを待たなければならず、時間がかかります。私は人々が画像を待っている間にテキストを最初に読むことができると思う。進行状況のダイアログで問題を解決することはできません。 – Nevis

答えて

1

たぶん、デバイスのカップルに、あなたはonScrollChanged()

を使用してのWebViewのスクロール位置を追跡することができ、ページの読み込みが完了したとき、あなたはところでscrollTo()

public void onPageFinished(WebView view, String url) { 
    // scroll to the stored position. 
} 

することができますあなたのユースケースをテストしましたが、これは非Reproです。あなたのコードで何かが間違っている可能性があります。

+0

リノさん、ありがとうございます。完璧な方法です。 – Nevis

0

ProgressBarではなくRelativeLayoutとしてプログレスバーを使用し、そのクリックリスナーをのonPageStarted()メソッドに設定しました。ここ はあなたの問題への私の実用的なソリューションである:ここで

private class MyBrowser extends WebViewClient { 
    final RelativeLayout progressBar = (RelativeLayout) findViewById(R.id.progressBarLayout); 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     progressBar.setOnClickListener(null); 
     progressBar.setVisibility(View.VISIBLE); 
    } 

    public void onPageFinished(WebView view, String url) { 
     progressBar.setVisibility(View.GONE); 
    } 
} 

は、関連するXMLです:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <WebView 
     android:id="@+id/webView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

    <RelativeLayout 
     android:id="@+id/progressBarLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:visibility="gone" > 

     <ProgressBar 
      style="?android:attr/progressBarStyleLarge" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" /> 
    </RelativeLayout> 
</RelativeLayout> 
関連する問題