2014-01-23 3 views
1

У меня есть приложение, в котором я использую ViewPager для перемещения между двумя фрагментами. Я отлично могу скользить между двумя Фрагментами; но теперь мне нужно сдвинуть только половину фрагмента. Как это сделать? Вот то, что я пробовал:Слайд только половина Фрагмент при использовании ViewPager

Это мой MainActivity

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; 
      } 
    } 

NewFragment.java

 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; 
     } 
    } 

ответ

-1

Переопределение getPageWidth метода PagerAdapter и сделать его return 0.5f;

+0

Но она будет отображаться половина обоего страниц и мы не можем даже скользить – user3201291

+0

Тогда я не понял вас вопрос правильно. Что вы подразумеваете под «необходимость скольжения только половины фрагмента»? – katzoft

+0

Я имею в виду, что весь первый фрагмент должен отображаться, но когда я нажимаю, половина первых слайдов и половина второго фрагмента слайдов в – user3201291

Смежные вопросы