Note that there are some explanatory texts on larger screens.

plurals
  1. POImages are not loading in a webview ViewPager
    text
    copied!<p>I am developing a simple app using ViewPager. It has content and images in a webview. ViewPager has a number of pages, all pages have the same data.</p> <p>content.xml:</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" &gt; &lt;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" /&gt; &lt;/RelativeLayout&gt; </code></pre> <p>SampleActivity.java: package com.android.sample;</p> <pre><code>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&lt;String&gt; 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&lt;String&gt;(); for(int i =0;i&lt;20;i++) { mPages.add("&lt;html&gt;&lt;head&gt;&lt;meta charset=\"utf-8\"&gt;&lt;/head&gt;&lt;html&gt;&lt;head&gt;&lt;style type=\"text/css\"&gt; img { max-width:100%; max-height:100%; } &lt;/style&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt; "+ i +" &lt;br&gt; &lt;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\" /&gt;&lt;em&gt;Lawyers at &lt;/em&gt;&lt;a href=\"http://yourstory.in/?s=vakilsearch\" target=\"_blank\"&gt;&lt;em&gt;VakilSearch &lt;/em&gt;&lt;/a&gt;&lt;em&gt;shed some light&lt;/em&gt;&lt;/p&gt;&lt;p&gt;The categorisation of an expense as revenue expenditure or capital expenditure has been a perpetual ground for litigation between assessees and the authorities.&lt;/p&gt;"); } 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) + "&lt;br&gt; "; } 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 = "&lt;p &gt;"+ content+ " &lt;/p&gt;"; 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 &amp;&amp; ((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; } } } </code></pre> <p>The html has different types of content (text + image) with same structure...</p> <p>Problem: when the activity starts, images are not shown. When I tap the zoom-in, the image shows, when I tap zoom-out, the images are not shown.</p> <p>I searched, but I didn't find any help.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload