Android 使用ViewPager时仅滑动半个片段

Android 使用ViewPager时仅滑动半个片段,android,android-viewpager,Android,Android Viewpager,我有一个应用程序,我使用一个ViewPager在两个片段之间滑动。我能在两个碎片之间完美地滑动;但现在我只需要滑动片段的一半。怎么做?以下是我尝试过的: 这是我的主要活动 public class MainActivity extends FragmentActivity { MyPageAdapter pageAdapter; Context c; int[] pics = {R.drawable.ic_launcher}; @Overrid

我有一个应用程序,我使用一个ViewPager在两个片段之间滑动。我能在两个碎片之间完美地滑动;但现在我只需要滑动片段的一半。怎么做?以下是我尝试过的:

这是我的主要活动

public class MainActivity extends FragmentActivity 
{
      MyPageAdapter pageAdapter;
      Context c;
      int[] pics = {R.drawable.ic_launcher};

      @Override
      public void onCreate(Bundle savedInstanceState) 
      {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        c = MainActivity.this;
        pageAdapter = new MyPageAdapter(getSupportFragmentManager(), c, pics);
        ViewPager pager = (ViewPager)findViewById(R.id.viewpager);
        pager.setAdapter(pageAdapter);
      }
    }
PageAdapter.java

        class MyPageAdapter extends FragmentPagerAdapter {
          Context c;
          int[] pics;
          Fragment fragment;

          public MyPageAdapter(android.support.v4.app.FragmentManager fm,  Context c, int[] pics) {
            super(fm);
            this.c =c;
            this.pics = pics;
          }

          @Override 
          public Fragment getItem(int position) {
              switch(position){
              case 0:return new MyFragment();
              case 1: return new NewFragment();
              default: return new MyFragment();
              }
          }

          @Override
          public int getCount() {
            return 2;
          }
        }
MyFragment.java

        public class MyFragment extends Fragment {
             public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";
             public static final MyFragment newInstance(String message,int a)
             {
                 MyFragment f = new MyFragment();
                 return f;
             }

             @Override
             public View onCreateView(LayoutInflater inflater, ViewGroup container,
               Bundle savedInstanceState) {

               View v = inflater.inflate(R.layout.myfragment_layout, container, false);
               TextView messageTextView = (TextView)v.findViewById(R.id.textView);
               messageTextView.setText("hi");
               v.setBackgroundColor(Color.parseColor("#ff0000"));
               return v;
             }
    }
        public class NewFragment extends Fragment {
        public static final MyFragment newInstance(String message,int a)
         {
           MyFragment f = new MyFragment();
           return f;
         }

         @Override
         public View onCreateView(LayoutInflater inflater, ViewGroup container,
           Bundle savedInstanceState) {
           View v = inflater.inflate(R.layout.new_fragment, container, false);
           Button b1 = (Button) v.findViewById(R.id.b1);
           v.setBackgroundColor(Color.parseColor("#0000ff"));
           return v;
         }
    }
NewFragment.java

        public class MyFragment extends Fragment {
             public static final String EXTRA_MESSAGE = "EXTRA_MESSAGE";
             public static final MyFragment newInstance(String message,int a)
             {
                 MyFragment f = new MyFragment();
                 return f;
             }

             @Override
             public View onCreateView(LayoutInflater inflater, ViewGroup container,
               Bundle savedInstanceState) {

               View v = inflater.inflate(R.layout.myfragment_layout, container, false);
               TextView messageTextView = (TextView)v.findViewById(R.id.textView);
               messageTextView.setText("hi");
               v.setBackgroundColor(Color.parseColor("#ff0000"));
               return v;
             }
    }
        public class NewFragment extends Fragment {
        public static final MyFragment newInstance(String message,int a)
         {
           MyFragment f = new MyFragment();
           return f;
         }

         @Override
         public View onCreateView(LayoutInflater inflater, ViewGroup container,
           Bundle savedInstanceState) {
           View v = inflater.inflate(R.layout.new_fragment, container, false);
           Button b1 = (Button) v.findViewById(R.id.b1);
           v.setBackgroundColor(Color.parseColor("#0000ff"));
           return v;
         }
    }

覆盖
PagerAdapter
getPageWidth
方法,使其
返回0.5f

但它将显示两个页面的一半,我们甚至无法滑动,因为我没有正确理解您的问题。你说的“只需要滑动片段的一半”是什么意思?我的意思是必须显示整个第一个片段,但当我滑动时,第一个片段的一半和第二个片段的一半会被显示出来in@user3201291检查位置,如果它是您想要的片段,则
返回0.5
否则,只是
return1.0
你找到了什么方法吗?如果是,请分享