2016-10-01 3 views
0

Ich versuche einfach mit TabLayout mit einem ViewPager paaren. Die Paarung funktioniert fast, aber die Tabtexte sind danach weg.Android Tablayout keine Registerkarte Titel nach dem Pairing mit Viewpager

Layout:

  <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"/> 

Code:

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); 

ich auch realisiert, dass durch viewPager.setAdapter(new GroupContentAdapter(getFragmentManager(), reference)); entfernen, werden die Titel nicht, hier so modifiziert werden, ist der der Code für den Adapter

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' wird die Titel der Tabs aus dem' PagerAdapter' mit dem ['getPageTitle()'] (https://developer.android.com/reference/android/support/v4/view/PagerAdapter) ziehen .html # getPageTitle (int)), also müssten Sie diese Methode in Ihrem 'GroupContentAdapter' überschreiben, um die korrekten Titel zurückzugeben. –

+0

@MikeM. Das ist eine Möglichkeit, damit es funktioniert. Vielen Dank. –

Antwort

0

Sie benötigen die getPageTitle() -Methode des FragmentPageAdapter außer Kraft zu setzen. siehe here

0

Im Inneren der Adapterklasse fügen Sie folgendes:

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

und im Inneren des MainActivity habe ich hinzugefügt die folgende innen 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); 
} 

Und das ist, wie Sie die Symbole hinzugefügt werden würde nachdem sie mit dem Text gegangen sind.

Wunsch diese Antwort hilft.

Verwandte Themen