ViewPager и PageTitleStrip
Итак, я пытаюсь создать вкладки Swipe, используя ViewPager из библиотеки suppoer.v4.
Все работает как задумано, НО заголовок и вкладки не отображаются. Я знаю, что там есть панель вкладок, потому что на ней показано 2-3 пикселя (я установил определенный цвет, вот как я знаю), но она не отображается полностью, как и название.
Я свяжу свой файл MainActivity.java,activity_main.xml и, если кто-нибудь спросит, добавлю два фрагмента. Но я сомневаюсь, что это проблема, поскольку у них там нет ничего, кроме линейного макета и textView.
MainActivity.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>
Если понадобится какая-либо другая информация, дайте мне знать, я буду максимально оперативен.
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?
Я думаю в 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);
}