viewpager studio pestañas example activity android android-fragments android-tabs

android - studio - Deshabilitar deslizar entre pestañas



tabs android studio material design (2)

La forma más simple es setOnTouchListener y devolver true para ViewPager .

respuesta original: https://stackoverflow.com/a/13392198/4293813

Configuro pestañas deslizantes con dos Fragment cada Fragment tiene un Button que va a una WebView . El problema con esto es cuando se hace clic en el Button WebView las pestañas deslizantes todavía están activadas y cuando un usuario intenta navegar dentro de WebView , termina deslizando hacia la otra pestaña. ¿Hay alguna manera en un método de hacer clic para desactivar la capacidad de deslizar de las pestañas? ¡Cualquier ayuda sería muy apreciada!

Aquí el código:

public class MyWebViewClass extends Fragment { private WebView mWebView; private Button mButton; public MyWebViewClass() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_webview, container, false); mWebView = (WebView) view.findViewById(R.id.WebView); mButton = (Button) view.findViewById(R.id.Button1); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mWebView.setVisibility(View.VISIBLE); mButton.setVisibility(View.GONE); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.loadUrl("www.google.com"); } }); return view; }


Esta respuesta se puede aplicar a cualquier ViewPager en realidad, sin importar cuál es la biblioteca que está utilizando para implementar las pestañas o incluso una ViewPager normal sin pestañas.

La biblioteca que está utilizando github.com/neokree/MaterialTabs está respaldada con un ViewPager que es responsable del efecto de deslizamiento y puede deshabilitarlo al proporcionar su propio ViewPager personalizado.

ViewPager con paginación deshabilitada todo el tiempo

import android.content.Context; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; public class CustomViewPager extends ViewPager { public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onTouchEvent(MotionEvent event) { return false; } @Override public boolean onInterceptTouchEvent(MotionEvent event) { return false; } }

O ViewPager con paginación activable o desactivable en cualquier momento.

import android.content.Context; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; public class CustomViewPager extends ViewPager { private boolean enabled; public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); this.enabled = true; } @Override public boolean onTouchEvent(MotionEvent event) { return enabled && super.onTouchEvent(event); } @Override public boolean onInterceptTouchEvent(MotionEvent event) { return enabled && super.onInterceptTouchEvent(event); } public void setPagingEnabled(boolean enabled) { this.enabled = enabled; } public boolean isPagingEnabled() { return enabled; } }

Esta clase proporciona una ViewPager que está habilitada para deslizar y puede desactivarla mediante viewPager.setPagingEnabled(false);

Sin mencionar que debe cambiar el diseño XML a su nueva ViewPager personalizada en lugar de la original.

<android.support.v4.view.ViewPager ... />

a

<my.package.CustomViewPager ... />