ViewPager中的Android ScrollView - 如何使刷卡更有效率

时间:2014-07-21 13:35:52

标签: android android-viewpager scrollview swipe

我正在开发应用程序,其中我有ViewPager,其中我有ScrollView包含TextView。一切正常,但是当我试图滚动ViewPager时,我必须“画”绝对水平线来刷页面。否则,如果绘制的线不是完全水平的,它将交换ScrollView。

这是我试图解释我的问题的图像。红线表示用户的滑动。

enter image description here

正如您所看到的,最后一个不会滑动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;
        }

    });

0 个答案:

没有答案