2012-01-12 38 views
0

私はViewPagerを使って簡単なアプリを開発しています。それは、webviewの内容と画像を持っています。 ViewPagerには複数のページがあり、すべてのページに同じデータがあります。画像がwebviewに読み込まれていませんViewPager

content.xml:

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

    <android.support.v4.view.ViewPager 
     android:id="@+id/content_pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:paddingBottom="5dp" 
     android:paddingLeft="9dp" 
     android:paddingRight="9dp" 
     android:paddingTop="5dp" /> 
</RelativeLayout> 

SampleActivity.java: パッケージcom.android.sample。

import java.util.ArrayList; 
import java.util.List; 

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Parcelable; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v4.view.ViewPager.SimpleOnPageChangeListener; 
import android.view.View; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.RelativeLayout; 

public class SampleActivity extends Activity { 
    public static ViewPager contentPager; 
    public static ContentPagerAdapter contentPagerAdapter; 
    public static List<String> mPages; 
    public static SampleActivity context; 
    int _position; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.content); 
     context = this; 
     mPages = new ArrayList<String>(); 
     for(int i =0;i<20;i++) { 
      mPages.add("<html><head><meta charset=\"utf-8\"></head><html><head><style type=\"text/css\"> img { max-width:100%; max-height:100%; } </style></head><body><p> "+ i +" <br> <img alt=\"\" class=\"alignleft\" height=\"160\" src=\"http://yourstory.in/wp-content/uploads/2011/10/vakil_search_n.jpg\" style=\"margin: 5px;\" title=\"vakil search\" width=\"280\" /><em>Lawyers at </em><a href=\"http://yourstory.in/?s=vakilsearch\" target=\"_blank\"><em>VakilSearch </em></a><em>shed some light</em></p><p>The categorisation of an expense as revenue expenditure or capital expenditure has been a perpetual ground for litigation between assessees and the authorities.</p>"); 
     } 
     contentPager = (ViewPager) findViewById(R.id.content_pager); 
     contentPagerAdapter = new ContentPagerAdapter(); 
     contentPager.setAdapter(contentPagerAdapter); 
     contentPager.setOnPageChangeListener(new PageListener()); 
     contentPager.setCurrentItem(0);  
    } 
    class PageListener extends SimpleOnPageChangeListener { 
      public void onPageScrollStateChanged (int state){ 
       //Log.d(TAG, "onPageScrollStateChanged state " + state+ " _position "+_position + "webView"+webView); 
     } 
     public void onPageScrolled (int position, float positionOffset, int positionOffsetPixels){ 
       //Log.d(TAG,"onPageScrolled Target webViewPrevious : " + webViewPrevious + " webView " + webView); 
     } 
     public void onPageSelected(int position) { 
      _position = position; 

      // TextView pageNumberView = (TextView) context.findViewById(R.id.page_no); 

      //pageNumberView.setText("" + (position + 1) + " of " + (viewNumber)); 
     } 
    } 


    public class ContentPagerAdapter extends PagerAdapter { 

     String html=""; 
     WebView webView; 
     @Override 
     public void destroyItem(View collection, int position, Object view) { 
      //clearALlVedios(); 

      ((ViewPager) collection).removeView((RelativeLayout) view); 

     } 
     @Override 
     public void finishUpdate(View arg0) { 
     } 
     @Override 
     public int getCount() { 
      return mPages.size(); 
     } 
     @Override 
     public Object instantiateItem(View collection, int position) { 

      RelativeLayout ll = new RelativeLayout(context); 

      webView = new WebView(context); 

      String content; 
      try { 
       content = mPages.get(position) + "<br> "; 

      } 
      catch (Exception e) { 
       content=""; 
      } 

      webView.clearCache(true); 
      webView.getSettings().setJavaScriptEnabled(true); 
      /// webView.getSettings().setLoadWithOverviewMode(false); 

      webView.getSettings().setPluginsEnabled(true); 
      webView.getSettings().setBuiltInZoomControls(true); 
      webView.requestFocusFromTouch(); 
      webView.setWebChromeClient(new WebChromeClient()); 

      //webView.getSettings().setUseWideViewPort(false); 
      webView.getSettings().setLoadsImagesAutomatically(true); 
      webView.setWebViewClient(new WebViewClient()); 
      // webView.getSettings().setUseWideViewPort(true); 
      //webView.getSettings(). 
      /*int scale = ((int) (100 * (webView.getScale()))) + 10 ; 

       Log.i(TAG, "zoom scale : "+ scale); 

       webView.setInitialScale(scale);*/ 

      // webView.setVerticalScrollBarEnabled(false); 
      // webView.setHorizontalScrollBarEnabled(false); 
      //webView.setInitialScale(140); 

      html = "<p >"+ content+ " </p>"; 

      ll.setPadding(8, 8, 2, 8); 
      final String mime = "text/html"; 
      final String encoding = "utf-8";    
      webView.loadDataWithBaseURL(null, html, mime, encoding, null); 
      webView.setWebViewClient(new WebViewClient(){ 
       public boolean shouldOverrideUrlLoading(WebView view, String url) { 
        if (url != null && ((url.startsWith("http://")) || (url.startsWith("https://")) || (url.startsWith("www.")))) { 
         view.getContext().startActivity(
           new Intent(Intent.ACTION_VIEW, Uri.parse(url))); 
         return true; 
        } else { 
         return false; 
        } 
       } 
      }); 

      ll.addView(webView); 

      ((ViewPager) collection).addView(ll); 
      ll.setTag(position); 
      return ll; 
     } 

     @Override 
     public boolean isViewFromObject(View view, Object object) { 
      return view == ((RelativeLayout) object); 
     } 
     @Override 
     public void restoreState(Parcelable arg0, ClassLoader arg1) { 
     } 
     @Override 
     public Parcelable saveState() { 
      return null; 
     } 
     @Override 
     public void startUpdate(View arg0) { 
     } 
     @Override 
     public int getItemPosition(Object object) { 
      return POSITION_NONE; 
     } 
    } 
} 

HTMLは...同一構造のコンテンツ(テキスト+画像)の異なるタイプを有する

問題:活動が開始したときに、画像が示されていません。ズームインすると画像が表示され、ズームアウトすると画像は表示されません。

私は検索しましたが、何の助けも見つかりませんでした。

+0

すべてのアクティビティのコードと他のレイアウトファイルを入力してください。これはかなり役に立ちます。 –

答えて

0

まず、コードにsetContentViewが表示されません。 WebViewは、ImageView,TextViewなどの別のビューです。setContentView機能を使用する必要があります。

異なるクライアントを使用していることに注意してください。WebViewClient()WebChromeClient()の違いを知る必要があります。主な違いは、WebViewClientがより設定可能であることです。

少なくとも2つの方法でウェブコンテンツを読み込むことができます。

最初のものは、他の方法は、直接ウェブページのURLをロードされる。開始する機能を

webView.loadData(html, mime, encoding); 

を使用して(「データ」スキームのURLを使用してWebViewに所定のデータを読み込み」であります私はあなたが、通常のWebページを行う資産フォルダまたはSDカードに保存し、そこからそれをロードするようにお勧めこのよう

:。

wview.loadUrl("file:///mnt/sdcard/yourfolder/yourpage.html"); 
wview.loadUrl("file:///android_asset/yourpage.html"); 

・ホープ、この時間少しelps。

+0

あなたのリプレイに感謝します。私はPagerAdopterを使用しています。これは完全なアクティビティコードは –

+0

です。webviewがレイアウト(ll.addView(webView);)に追加するときに、どこに問題があるのですか?私たちはXMLファイルからwebviewを読んでも何の問題も、それを解決する方法 –

関連する問題