ViewPager и PageTitleStrip

Итак, я пытаюсь создать вкладки Swipe с помощью ViewPager из библиотеки suppoer.v4.

Все работает как задумано, НО не отображается строка заголовка и вкладки. Я знаю, что панель вкладок есть, потому что на ней отображаются 2-3 пикселя (я задаю определенный цвет, вот откуда я знаю), но она не отображается полностью, как и заголовок.

Я свяжу свои MainActivity.java, activity_main.xml, и если кто-то спросит, я добавлю два фрагмента. Но я сомневаюсь, что это проблема, поскольку у них нет ничего, кроме линейного макета и textView.

Основная активность.java:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;

public class MainActivity extends FragmentActivity {

    ViewPager viewPager=null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        viewPager = (ViewPager) findViewById(R.id.viewPager);
        FragmentManager fm = getSupportFragmentManager();
        viewPager.setAdapter(new Adaptor(fm));
    }

    class Adaptor extends FragmentPagerAdapter{


        Fragment fragment = null;

        public Adaptor(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int i) {

            if(i==0){
                fragment = new OpiniaTa();
            }
            if(i==1){
                fragment = new Test();
            }

            return fragment;
        }

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

        @Override
        public CharSequence getPageTitle(int position) {

            if(position == 0){
                return "Opinia ta";
            }
            if(position == 1){
                return "test";
            }

            return null;
        }
    }

}

Activity_main.xml:

<android.support.v4.view.ViewPager
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/viewPager"
    android:layout_height="match_parent"
    android:layout_width="match_parent">

    <android.support.v4.view.PagerTitleStrip
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/titleTabs"
        android:background="#33B5E5"
        android:foregroundGravity="top"
        android:paddingTop="4dp"
        android:paddingBottom="4dp"
        >
    </android.support.v4.view.PagerTitleStrip>

</android.support.v4.view.ViewPager>

Если нужна какая-либо другая информация, дайте мне знать, я буду как можно быстрее.


person Vlad    schedule 18.09.2015    source источник


Ответы (2)


Не могли бы вы выложить скриншот результата. Мне интересно, отображается ли только содержимое вкладок или сами вкладки.

В версии 23.0.0 возникла проблема с отсутствием текста на вкладке https://code.google.com/p/android/issues/detail?id=183127 https://code.google.com/p/android/issues/detail?id=184431

Возможно, ваша проблема не связана с этим. Просто хочу убедиться.

В качестве альтернативы, используйте ссылку ниже, как предложил плакат. Вероятно, wrap_content по высоте...

Как мы можем работать - вокруг пустого заголовка в PagerTitleStrip и PagerTabStrip?

person arbrcr    schedule 18.09.2015
comment
Вкладки не отображались. Но я это исправил. Теперь у меня возникла проблема, которую вы только что связали с кодом. Google ... нашел ее около 2 минут назад, а также нашел исправление. Но вам нужно перезаписать библиотеку v4. - person Vlad; 18.09.2015
comment
Я опубликую свой ответ через секунду. - person Vlad; 18.09.2015
comment
Круто. что вы думаете об использовании TabLayout из библиотеки дизайна? - person arbrcr; 18.09.2015
comment
Хм, позвольте мне проверить. Может быть, это хорошая идея. Пока не буду публиковать ответ. - person Vlad; 18.09.2015
comment
Хорошо, позже я переключусь на TabLayout, так как я работаю довольно много часов, и мне нужен перерыв. В любом случае, ваша ссылка на тему code.google - это то, что решило мою проблему, поэтому я проверю ваш ответ как правильный даже хотя я нашел это сам. Не могли бы вы также добавить эту ссылку в свой ответ, чтобы я мог проверить ее правильность? stackoverflow.com/questions/32379050/ Когда вы добавите это, я проверю это. - person Vlad; 18.09.2015

Я думаю, что в классе Adaptor вы должны сделать constructor включаемый список фрагментов. Следующий код - это то, что я делаю. Надеюсь, это поможет.

public class PagerAdapter extends FragmentPagerAdapter {

    private  List<Fragment> fragments;

    public PagerAdapter(FragmentManager fm, List<Fragment> fragmentList) {
        super(fm);

        this.fragments = fragmentList;
    }

    @Override
    public Fragment getItem(int i) {
        return this.fragments.get(i);
    }

    @Override
    public int getCount() {
        return this.fragments.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0:
                return "Opinia ta";
            case 1:
                return "test";
            default:
                return null;
        }
    }
}

И в MainActivity классе:

 private  PagerAdapter mPagerAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.viewpager_layout);
        initializePaging();
    }

    private void initializePaging() {
        List<Fragment> fragments = new Vector<Fragment>();
        fragments.add(Fragment.instantiate(this, WebServiceFragment.class.getName()));
        fragments.add(Fragment.instantiate(this, CMCSMOFragment.class.getName()));

        mPagerAdapter = new PagerAdapter(this.getSupportFragmentManager(), fragments);

        ViewPager pager = (ViewPager) findViewById(R.id.viewpager);
        pager.setAdapter(mPagerAdapter);
    }
person Mr Neo    schedule 18.09.2015
comment
Я только что попробовал ваш способ, и это то же самое. Было довольно очевидно, что это не изменится, потому что это просто немного другой подход, чем тот, который я использовал. Есть другие предложения? - person Vlad; 18.09.2015
comment
Какую версию инструмента сборки вы используете? 23.0.1? - person Mr Neo; 18.09.2015
comment
Да, нашел, я использую 23.0.1 - person Vlad; 18.09.2015
comment
Но я почти уверен, что последняя версия 23.0.0, не так ли? - person Vlad; 18.09.2015
comment
Вы должны использовать 22.x.x, потому что в версии 23.0.x это проблема. Я вижу, что вы нашли его. - person Mr Neo; 18.09.2015
comment
Я пробовал это раньше с 22.0.1, и проблема не устранена. - person Vlad; 18.09.2015