2016-10-01 56 views
0

我只是試圖與ViewPager搭配使用TabLayout。配對幾乎奏效,但Tabtexts後來不見了。Android Tablayout與viewpager配對後沒有標籤標題

佈局:

  <android.support.design.widget.TabItem 
       android:id="@+id/group_tab_orders" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 

       android:text="@string/orders"/> 

      <android.support.design.widget.TabItem 
       android:id="@+id/group_tab_members" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/members"/> 

      <android.support.design.widget.TabItem 
       android:id="@+id/group_tab_meals" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/meals"/> 

     </android.support.design.widget.TabLayout> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/group_viewpager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"/> 

代碼:

tabLayout = (TabLayout) rootView.findViewById(R.id.group_tablayout); 
    viewPager = (ViewPager) rootView.findViewById(R.id.group_viewpager); 

    reference = FirebaseDatabase.getInstance().getReference("groups").child(getArguments().getString("key")); 

    viewPager.setAdapter(new GroupContentAdapter(getFragmentManager(), reference)); 
    tabLayout.setupWithViewPager(viewPager); 

我也意識到,通過viewPager.setAdapter(new GroupContentAdapter(getFragmentManager(), reference));刪除,標題將不會被修改,所以這裏是適配器

的代碼

GroupContentAdapter.java

public class GroupContentAdapter extends FragmentPagerAdapter { 

public static int SIZE = 3; 

private GroupContentFragment[] contents; 
private DatabaseReference reference; 


public class GroupContentAdapter extends FragmentPagerAdapter { 

public static int SIZE = 3; 

private GroupContentFragment[] contents; 
private DatabaseReference reference; 


public GroupContentAdapter(FragmentManager manager, DatabaseReference reference) { 
    super(manager); 
    this.reference = reference; 
    contents = new GroupContentFragment[SIZE]; 
    contents[0] = GroupContentFragment.newInstance(reference.child(Utils.GROUPORDERS), ContentType.ORDERS); 
    contents[1] = GroupContentFragment.newInstance(reference.child(Utils.GROUPMEMBERS), ContentType.MEMBERS); 
    contents[2] = GroupContentFragment.newInstance(reference.child(Utils.GROUPMEALS), ContentType.MEALS); 
} 

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

@Override 
public Fragment getItem(int position) { 
    return contents[position]; 
} 

}

+2

IIRC,'TabLayout'會使用['getPageTitle()'](https://developer.android.com/reference/android/support/v4/view/PagerAdapter)從[PagerAdapter] .html#getPageTitle(int))方法,因此您需要在您的「GroupContentAdapter」中重寫該方法以返回正確的標題。 –

+0

@MikeM。這是使其工作的一種方式。謝謝。 –

回答

0

您需要覆蓋FragmentPageAdapter的getPageTitle()方法。看到here

0

裏面的適配器類添加以下內容:

@Override 
public CharSequence getPageTitle(int position) { 
    if (position == 0) 
     return "Text1"; 
    else 
     return "Text2"; 
} 

而且MainActivity我在裏面添加了以下內部onCreate

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

    // Add a View Pager with its settings 
    viewPager = (ViewPager) findViewById(R.id.pager); 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    viewPager.setAdapter(new MyAdapter(fragmentManager)); 

    pageIndicatorView = (PageIndicatorView) findViewById(R.id.pageIndicatorView); 
    pageIndicatorView.setViewPager(viewPager); 

    // Add toolbar with its settings 
    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    toolbar.setTitle("Custom Title"); 
    setSupportActionBar(toolbar); 

    // Add tabLayout and link it to the ViewPager. 
    tabLayout = (TabLayout) findViewById(R.id.tablayout); 
    tabLayout.setupWithViewPager(viewPager); 
    tabLayout.getTabAt(0).setIcon(R.drawable.image1); 
    tabLayout.getTabAt(1).setIcon(R.drawable.image2); 
} 

而且你這是怎麼會被添加圖標在他們離開文本之後。

祝這個答案有幫助。