Je suis en train d'utiliser un TabLayout et j'ai des images personnalisées pour les onglets que j'utilise, mais pour la vie de moi je ne peux pas comprendre comment changer la couleur ou même l'image du séparateur entre les onglets et le contenu de l'onglet. J'ai essayé d'utiliser setDividerDrawable(), mais cela plante quand je l'appelle avant de définir le contenu de l'onglet et ne fait tout simplement rien quand je l'appelle après. Si je pouvais juste le mettre en noir ça serait suffisant, mais jusqu'à présent rien n'a fonctionné. Merci pour toute guidance.
Réponses
Trop de publicités?Vous devez faire ceci : tabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider);
Où R.drawable.tab_divider est une image dans votre répertoire de ressources.
Mais la clé est que vous devez le faire AVANT d'avoir ajouté des onglets à l'hôte d'onglets.
Mon code d'initialisation des onglets ressemble à ceci :
private void initializeTabs(int curTab) {
this.tabHost = getTabHost();
tabHost.clearAllTabs();
TabSpec ts1, ts2, ts3, ts4, ts5;
// séparateur d'onglets
tabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider);
ts1 = this.setupTab(new TextView(this), tabHost, R.drawable.browse_tab_normal,
mResources.getString(R.string.Browse));
ts2 = this.setupTab(new TextView(this), tabHost, R.drawable.search_tab_normal,
mResources.getString(R.string.Search));
ts3 = this.setupTab(new TextView(this), tabHost, R.drawable.postad_tab_normal,
mResources.getString(R.string.Post));
ts4 = this.setupTab(new TextView(this), tabHost, R.drawable.watchlist_tab_normal,
mResources.getString(R.string.WatchList));
ts5 = this.setupTab(new TextView(this), tabHost, R.drawable.managead_tab_normal,
mResources.getString(R.string.Login));
// intents
ts1.setContent(new Intent().setClass(this, BrowseTabActivity.class));
ts2.setContent(new Intent().setClass(this, SearchTabActivity.class));
ts3.setContent(new Intent().setClass(this, PostAdTabActivity.class));
ts4.setContent(new Intent().setClass(this, WatchlistTabActivity.class));
ts5.setContent(new Intent().setClass(this, LoginTabActivity.class));
tabHost.addTab(ts1);
tabHost.addTab(ts2);
tabHost.addTab(ts3);
tabHost.addTab(ts4);
tabHost.addTab(ts5);
...
La meilleure façon de définir un séparateur est de le créer à partir de votre balisage XML :
Ainsi, vous pouvez définir un drawable directement depuis le balisage. Notez que vous devez utiliser android:divider
ainsi que android:showDividers="middle"
pour placer les séparateurs entre les onglets. Pour en savoir plus, consultez la spécification et prêtez attention aux propriétés héritées de LinearLayout - docs sur google