Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
STRATEG_LTY
2 / 2 / 0
Регистрация: 21.04.2013
Сообщений: 22
#1

Как заставить работать ViewPager + TabLayout в ScrollView? - Программирование Android

22.08.2016, 14:51. Просмотров 349. Ответов 2

Здравствуйте.
Столкнулся с проблемой - ViewPager напрочь отказывается отображаться в ScrollView. При этом вне ScrollView всё работает как надо. Ошибок система никаких не выдаёт.
В попытка решить эту проблему я использовал решения с этих сайтов:
stackoverflow.com/questions/7381360/is-it-possible...
muratonnet.blogspot.ru/2014/01/android-viewpager-i...
и ещё нескольких не относящих на прямую к проблеме.

Вот шаблон layout для фрагмента в котором я вывожу ViewPager
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.example.strateg.test.NawigationDrawer"
    tools:showIn="@layout/app_bar_nawigation_drawer"
    android:id="@+id/main_layout">
 
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
 
    <include layout="@layout/details_project_page"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        ></include>
 
    </ScrollView>
 
</FrameLayout>
Вот шаблон ViewPager + TabLayout
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/layout_details_page_project">
    <android.support.design.widget.TabLayout
       android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tab_layout_details_project"
        app:tabIndicatorColor = "@color/color_blue_text"
        app:tabIndicatorHeight="6dp"
        app:tabSelectedTextColor="@color/color_black_head_project_page"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
         />
 
    <android.support.v4.view.ViewPager
 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/content_details_tabs_layout"
        app:layout_behavior = "@string/appbar_scrolling_view_behavior"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_above="@+id/tab_layout_details_project"
        android:fillViewport="true"
        android:forceHasOverlappingRendering="false"
        android:nestedScrollingEnabled="false"
        android:touchscreenBlocksFocus="false"
        android:transitionGroup="false">
 
    </android.support.v4.view.ViewPager>
 
</RelativeLayout>
Вот класс который управляет ViewPager + TabLayout

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
public class DetailsTabLayoutPageProject {
 
    private ViewPager content_details_tabs_layout;
 
    private void init_tabs()
    {
 
    }
 
    DetailsTabLayoutPageProject(FragmentManager fragmentManager, View parent)
    {
        content_details_tabs_layout = (ViewPager) parent.findViewById(R.id.content_details_tabs_layout);
        AdapterFragmentTabs adapter = new AdapterFragmentTabs(fragmentManager);
        content_details_tabs_layout.setAdapter(adapter);
        TabLayout tab_layout_details_project = (TabLayout) parent.findViewById(R.id.tab_layout_details_project);
        tab_layout_details_project.setupWithViewPager(content_details_tabs_layout );
    }
 
    class AdapterFragmentTabs extends FragmentPagerAdapter {
        private String tabs[];
 
        public AdapterFragmentTabs(FragmentManager fm) {
            super(fm);
            tabs = new String[]{
                    "1 вклвдка",
                    "2 вклвдка",
                    "3 вклвдка",
                    "4 вклвдка",
                    "5 вклвдка",
            };
        }
 
        @Override
        public Fragment getItem(int position) {
            switch (position)
            {
                default:return MyExampleFragment.getInstance();
            }
        }
 
        @Override
        public CharSequence getPageTitle(int position) {
            //return super.getPageTitle(position);
            return  tabs[position];
        }
 
        @Override
        public int getCount() {
            return tabs.length;
            //return 0;
        }
    }
 
    static class MyExampleFragment extends Fragment{
        private static final int LAYOUT = R.layout.description_project_page_fragment;
        private View view;
 
        public static MyExampleFragment getInstance()
        {
            Bundle args = new Bundle();
            MyExampleFragment fragment = new MyExampleFragment();
            fragment.setArguments(args);
            return fragment;
        }
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            view = inflater.inflate(LAYOUT, container, false);
            return view;
        }
    }
}
Подскажите пожалуйста, как заставить ViewPager отображаться в ScrollView.
Или возможно надо использовать другой контейнер вместо ScrollView.
Или предложите чем можно заменить связку ViewPager + TabLayout, но с таким же функционалом.
Или если у вас есть рабочий код в котором ViewPager отображается в ScrollView, то дайте пожалуйста на него ссылку, может смогу найти причину сравнивая код.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2016, 14:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как заставить работать ViewPager + TabLayout в ScrollView? (Программирование Android):

Как заставить работать BroadcastReceiver? - Программирование Android
Добрый день! Собственно идея: есть стандартный плеер телефона(HTC One m7 Android 4.4.3) и проводная гарнитура с одной кнопкой. Но по...

Как заставить работать setImageLevel в потомке ImageView - Программирование Android
Имею такой layout: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; ...

Как равномерно растянуть табы в TabLayout - Программирование Android
Как равномерно растянуть табы? Они почему-то сдвинуты вправо &lt;LinearLayout ...

Как убрать эффект нажатия в TabLayout - Программирование Android
Привет всем! При нажатии на tab на мгновение появляется соответствующий &quot;эффект нажатия&quot;. Как сделать так, чтобы просто менялись иконки без...

Заставить андроид работать с купюроприемником BV20 - Программирование Android
Друзья, возникла задача заставить купюроприемник взаимодействовать с планшетом под платформой android. Может есть у кого идеи, как это...

Не могу заставить работать Retrofit + RxJava - Программирование Android
Не могу заставит работать Retrofit + RxJava. Кто может помочь? Без RxJava всё работает. Лямбды никак не могу подключить, поэтому...

2
kirawa
34 / 34 / 1
Регистрация: 12.11.2013
Сообщений: 338
22.08.2016, 15:11 #2
А может надо скролл вью в вью пэйджере отображать(наоборот). Не уверен но думаю будет работать
0
STRATEG_LTY
2 / 2 / 0
Регистрация: 21.04.2013
Сообщений: 22
23.08.2016, 03:57  [ТС] #3
Проблему то это не решит.
Вообще по тз(дизайну) надо много информации пролистать и потом дойти до этих вкладок.
ТО есть вкладки должны лежать в скроле, что бы до них можно было проскролить.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2016, 03:57
Привет! Вот еще темы с ответами:

Как перемещать FrameLayouts в ScrollView? - Программирование Android
Доброго времени суток))) У меня в активити 10 frames засунуты в ScrollView. Как сделать так, чтобы при нажатии на кнопку, frameLayout...

Скроллинг ViewPager-а как у ListView - Программирование Android
Как сделать скроллинг у ViewPager-а по несколько элементов сразу, в зависимости от скорости жеста, и доводить до просчитанной позиции? ...

Содержимое ScrollView сохранить картинкой в галерею. Как? - Программирование Android
Возможно я просто не знаю как правильно спросить об этом у гугла, чтоб он ответил или идея вообще бредовая. Имеется: ScrollView, в...

Как обновить viewpager или listfragment? - Программирование Android
Добрый день! Помогите пожалуйста разобраться в следующем вопросе. У меня есть ViewPager с FragmentPagerAdapter и десять ListFragment...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru