我正在开发应用程序,其中我有ViewPager,其中我有ScrollView包含TextView。一切正常,但是当我试图滚动ViewPager时,我必须“画”绝对水平线来刷页面。否则,如果绘制的线不是完全水平的,它将交换ScrollView。
这是我试图解释我的问题的图像。红线表示用户的滑动。
正如您所看到的,最后一个不会滑动ViewPager,而是ScrollView。而且有问题。当您用一只手握住手机时,您正在使用拇指滑动,这意味着您没有绘制完美的水平线,而是与上一个Nexus上显示的线类似的线。 所以我的问题是 - 如何提高刷卡效率以改善用户体验?
以下是我正在使用的一些代码:
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;
}
});