viewpager swiping disable cancel android android-viewpager scrollview swipe

swiping - Android ScrollView dentro de ViewPager: cómo hacer que el deslizamiento sea más eficiente



android viewpager cancel swipe (0)

Estoy desarrollando una aplicación donde tengo ViewPager, dentro de la cual tengo ScrollView que contiene TextView. Todo está funcionando, pero cuando intento desplazar ViewPager, debo "dibujar" una línea absolutamente horizontal para deslizar una página. De lo contrario, si la línea dibujada no es perfectamente horizontal, cambiará ScrollView en su lugar.

Aquí está la imagen donde trato de explicar cuál es mi problema. La línea roja representa el deslizamiento del usuario.

Como puede ver, el último no deslizará ViewPager, sino ScrollView. Y hay un problema Cuando sostiene el teléfono en una mano, está usando el pulgar para deslizar y eso significa que no está dibujando una línea perfectamente horizontal, sino una línea que es similar a la línea que se muestra en el último Nexus. Entonces mi pregunta es: ¿cómo hacer que este deslizamiento sea más eficiente para mejorar la experiencia del usuario?

Aquí hay algo de mi código que estoy usando:

fragment.xml

<android.support.v4.view.ViewPager android:id="@+id/view_pager" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/divider" android:paddingBottom="16dp" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingTop="16dp" > </android.support.v4.view.ViewPager>

CustomPagerAdapter.java

ScrollView scroll; TextView text; @Override public Object instantiateItem(ViewGroup container, int position) { //Adding scrollview scroll = new ScrollView(context); //Creating TextView text = new TextView(context); text.setText(stringArray[position]); text.setTextAppearance(context, android.R.style.TextAppearance_Medium); //Adding TextView to ScrollView scroll.addView(text, 0); //Adding ScrollView to ViewPager ((ViewPager) container).addView(scroll, 0); return scroll; }

Fragment.java

CustomPagerAdapter adapter; ViewPager pager; ... ///Set adapter adapter = new CustomPagerAdapter(getActivity().getApplicationContext(), stringArray); } pager.setAdapter(adapter); //Set onPagerChanger event pager.setOnPageChangeListener(new OnPageChangeListener(){ @Override public void onPageScrollStateChanged(int arg0) {} @Override public void onPageScrolled(int arg0, float arg1, int arg2) { pager.getParent().requestDisallowInterceptTouchEvent(true); } @Override public void onPageSelected(int position) { titleUpdater(position); activePosition = position; } });