2

У меня возникли проблемы с созданием и добавлением пейджера представления программно.Создать/Добавить пейджеры для просмотра программно

Я нашел этот вопрос Android create ViewPager programmatically, но принятый ответ не работает для меня.

Вот относительный код.

  ImagesPagerAdapter mImagePagerAdapter = new ImagesPagerAdapter(getActivity(), mProduct.getImages()); 
      ViewPager mImagePager = (ViewPager) inflater.inflate(R.layout.partial_view_pager, null); 
      mImagePager.setAdapter(mImagePagerAdapter); 
      rootView.add(mImagePager); 

Я также попытался модифицировать вторую линию, но никакого эффекта:

  ViewPager mImagePager = new ViewPager(getActivity()); 

Вид пейджер просто не показывает в оказанном макете. Если я отлаживаю, я вижу, что он создает экземпляры, но они просто не показывают. Я попытался добавить идентификатор, как предлагается в решении, а также установить id в макете partial_view_layout.

Единственное, что работает, - это добавить пейджер представления через xml непосредственно в макет. Это не вариант для меня, так как я хочу иметь возможность добавлять несколько пейджеров в один макет.

Любые идеи?

+0

Проверьте свой ответ на этот пост (http://stackoverflow.com/questions/28676491/how-to-dynamically-set-number-of- swipeable-tabs-in-action-bar-using-fragment/28679356 # 28679356) – Xcihnegn

+0

Не понимаю, как этот ответ относится к моему вопросу? У меня нет проблем с динамическим количеством вкладок в представлении пейджера, я хочу добавить много пейджера представления в макет, поэтому у меня будет много строк для swipeable контента. – JanBo

+2

Вы пытались установить id (например, 'viewPager.setId (R.id.your_id)') на viewpager? – waqaslam

ответ

0

Ваш вопрос важен, он применяется не только к ViewPager, но и к общему случаю: «как создать представление динамически?»

Три шага:

  • настроить View объект
  • настроить LayoutParams (так что вид может сказать макет какого размера она хочет быть и т.д.)
  • Добавьте его к представлению иерархию, где вы хотите, чтобы она появилась

Для ViewPager есть несколько деталей, которые вам не хватает:

// this is the container for the ViewPager 
FrameLayout mRootView; 
mRootView = (FrameLayout) findViewById(R.id.root_layout); 

ViewPager viewPager = new ViewPager(this); 

viewPager.setId(View.generateViewId()); // --> this is important! 

viewPager.setAdapter(new CustomViewPagerAdapter(getSupportFragmentManager(), this)); 

// --> Important! * 
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 

viewPager.setLayoutParams(params); 

// --> Important! 
mRootView.addView(viewPager, viewPager.getLayoutParams()); 

одно замечание, в зависимости от Layout, которые вы используете, вам придется изменить LayoutParams, который вы используете:

т.е..

RelativeLayout ->RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(...)

LinearLayout ->LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(...)

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

  • Нет связанных вопросов^_^