2017-08-20 4 views
0

Je suis en train de créer une mise en page avec un texte et une icône personnalisés. La disposition de l'onglet est configurée avec viewpager. J'ai suivi cette référence pour définir une vue personnalisée. https://developer.android.com/reference/android/support/design/widget/TabLayout.Tab.html#setCustomView(android.view.View)TabLayout setText() et setIcon() ne fonctionnent pas correctement avec la vue personnalisée

Mais le texte et l'icône ne sont pas mis à jour lorsque je l'ai défini avec setText() et setIcon().

custom_tab.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center"> 

    <TextView 
     android:id="@+id/text1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="top" 
     android:textColor="#ffffff" 
     android:textSize="10dp" /> 

    <ImageView 
     android:id="@+id/icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</RelativeLayout> 

MainActivity.java - setUpTabIcons()

private void setupTabIcons() { 
    private int[] tabIcons = { 
     R.drawable.ic_art_track_black_24dp, 
     R.drawable.ic_notifications_black_24dp, 
     R.drawable.ic_chat_bubble_black_24dp, 
     R.drawable.ic_person_add_black_24dp 
    }; 
    for (int i = 0; i < 4; i++) { 
     tabLayout.getTabAt(i).setCustomView(R.layout.custom_tab); 
     tabLayout.getTabAt(i).setIcon(tabIcons[i]); 
     tabLayout.getTabAt(i).setText("Random"); 
    } 
} 

que je fais mal? Toute méthode alternative sera appréciée.

Répondre

1
private void setupTabs() { 
    String[] titles = getResources().getStringArray(R.array.titles); 
    int[] icons = ---- 
    for (int i = 0; i < titles.length; i++) { 
     if (mTabLayout != null) { 
      TabLayout.Tab tab = mTabLayout.getTabAt(i); 
      if (tab != null) 
       tab.setCustomView(prepareTabView(titles[i], icons[i])); 
     } 
    } 
} 

private View prepareTabView(String title, int icon) { 
    View view = View.inflate(getContext(), R.layout.list_item_tab, null); 
    TextView tabTitle = (TextView) view.findViewById(R.id.tab_title); 
    ImageView tabIcon = (ImageView) view.findViewById(R.id.tab_icon); 
    tabTitle.setText(title); 
    tabIcon.setImageResouce(icon); 
    return view; 
}