Я создал DialogFragment
, и внутри него есть ViewPager
, который имеет 3 вкладки. Я хочу изменить высоту ViewPager
в соответствии с текущей вкладкой. Вот мой код:Как изменить высоту ViewPager в соответствии с текущей вкладкой?
mViewPager.setAdapter(mAdapter);
mTabLayout.setupWithViewPager(mViewPager); //TabLayout of Android Support Design Library
mViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
ViewGroup.LayoutParams params = mViewPager.getLayoutParams();
params.height = mTabHeights.get(position);
}
});
Это не всегда полезно. Когда я прокручиваю ViewPager
, он может динамически изменять высоту в соответствии с текущей вкладкой, все работает хорошо. Однако, , когда я нажимаю вкладки внутри TabLayout
, страница не всегда может изменяться на вкладку, которую я хочу выбрать. Кроме того, я вижу некоторые странное поведение, как:
- индикатор прокручивается, чтобы исправить положение, но textColors обоих предыдущей вкладки и вкладки Я хочу, чтобы выбрать не изменить (я установить различные цвета для выбранных и невыделенные вкладки от
TabLayout
's API) - Индикатор прокручивается до правильного положения, цвета также правильные. Высота
ViewPager
также изменяется на правильный номер, но содержимое вкладки неверно (иногда оно не изменяется, иногда оно становится пустым).
Я обнаружил, что onPageSelected() не всегда вызывался, когда я щелкал вкладками внутри TabLayout
. Но если я переведу код смены LayoutParams
ViewPager
, его можно будет назвать правильно.
Итак, в чем проблема? И как я могу изменить высоту ViewPager динамически для разных вкладок? Спасибо за любые ответы/комментарии заранее!
Используйте это: https://github.com/rnevet/WCViewPager, это ViewPager, который обрабатывает wrap_content и динамически изменяет высоту. – Raanan
@Raanan Я пробовал это раньше, но это не работает в моем случае. – ywwynm