2012-01-09 11 views
15

Tengo un WebView en un ViewPager. Y el ViewPager parece consumir todo el desplazamiento horizontal, por lo que no puedo desplazarme en el WebView (trabajos verticales).Desplazamiento Webview en Viewpager

¿Cómo puedo lograr que el WebView tenga prioridad consumiendo el desplazamiento horizontal?

+0

Tendrás que anular el buscador de la vista, no estoy en casa espero que recuerde cuando llegue allí –

+0

hey :) algo nuevo con esto, también se ha quedado con el mismo problema ... :) – cV2

Respuesta

8

no me pregunte por qué este código se formatea como este,

1. implementar una costumbre ViewPager Instancia de esta manera:

import android.content.Context; 
import android.support.v4.view.ViewPager; 
import android.util.AttributeSet; 
import android.util.Log; 
import android.view.MotionEvent; 

public class CustomViewPager extends ViewPager { 

    private MagazineWebView_WithoutFlipWebView mCurrentPageWebView_; //custom webview 

    public CustomViewPager(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent event) { 

     if (Constants.LOGGING) { 
      Log.v(Constants.LOG_OEAMTC_APP, "CustomViewPager - onInterceptTouchEvent"); 
     } 

     // if view zoomed out (view starts at 33.12... scale level) ... allow 
     // zoom within webview, otherwise disallow (allow viewpager to change 
     // view) 
     if (mCurrentPageWebView_ != null && (mCurrentPageWebView_.getScale() * 100) > 34) { 
      Log.v(Constants.LOG_OEAMTC_APP, "CustomViewPager - intrcepted: " + String.valueOf((mCurrentPageWebView_.getScale() * > 100))); 
      this.requestDisallowInterceptTouchEvent(true); 
     } 
     else { 
      if (mCurrentPageWebView_ != null) { 
       Log.v(Constants.LOG_OEAMTC_APP, 
         "CustomViewPager - not intrcepted: " + String.valueOf(mCurrentPageWebView_.getScale() * 100)); 
      } 
      this.requestDisallowInterceptTouchEvent(false); 
     } 

     return super.onInterceptTouchEvent(event); 
    } 

    public MagazineWebView_WithoutFlipWebView getCurrentPageWebView() { 
     return mCurrentPageWebView_; 
    } 

    public void setCurrentPageWebView(MagazineWebView_WithoutFlipWebView currentPageWebView) { 
     mCurrentPageWebView_ = currentPageWebView; 
    } 
} 

2. en su actividad principal (ViewPager), agregue las siguientes líneas al buscapersonas

mViewPager_ = new AwesomePagerAdapter(); 
     viewpapgerInLayout = (CustomViewPager) findViewById(R.id.awesomepager); 
     viewpapgerInLayout.setAdapter(mViewPager_); 
     viewpapgerInLayout.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      @Override 
      public void onPageSelected(int position) { 
        viewpapgerInLayout.setCurrentPageWebView(mLstPagesWebviews_.get(position)); 
      } 

      @Override 
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 
     }); 

3. Por último, ejecutarlo: =) si el nivel de zoom está en el zoom inicial, cambia páginas está permitido, todo el tiempo restante se puede navegar por su página we

Sal. : * no se olvide * para cambiar su ViewPager en su archivo .xml * con la Clase CustomViewPager que acaba de crear

buena suerte :)

+2

¿es posible cambiar el código para que si la vista web se desplaza totalmente hacia un lado y luego si me desplazo más en la dirección en que el visor consume el desplazamiento, incluso si la vista web no tiene el nivel de zoom inicial? – anonymous

+0

sí, creo que soy posible, solo tienes que adaptar el código (para mí no es necesario), pero tal vez para otros sería genial si compartes tu código. teóricamente simplemente acceda a los ejes X, Y de la vista web y compruebe si está en un borde o no, de ser así, deje que el visor cambie la página :) buena suerte: =) (vote esta respuesta si le gusta) – cV2

1

Prueba este

WebView mWebView = (WebView) findViewById(R.id.MyWebview); 
mWebView.getSettings().setLoadWithOverviewMode(true); 
mWebView.getSettings().setUseWideViewPort(true); 
mWebView.getSettings().setSupportZoom(true); 
mWebView.getSettings().setBuiltInZoomControls(true); 
mWebView.getSettings().setUserAgentString("Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3"); 
+0

Sin cambios. Todavía no funciona. – anonymous

Cuestiones relacionadas