Desidero rendere il testo di una scheda selezionata in grassetto. Come posso farlo tramite codice xml o java, qualunque cosa sia più facile.Come si modifica lo stile di testo di una scheda selezionata quando si utilizza tabLayout?
risposta
C'è un modo per aggiungere grassetto programmazione utilizzando un CustomView Tab, il caricamento di un TextView in quella CustomView e applicando lo styling sul TextView:
private TabLayout mTabLayout;
protected void onCreate(Bundle savedInstanceState) {
...
mTabLayout = (TabLayout) findViewById(R.id.tablayout);
mTabLayout.setOnTabSelectedListener(new OnTabSelectedListener());
int tabCount = mTabLayout.getTabCount();
for (int i = 0; i < tabCount; i++) {
TabLayout.Tab tab = mTabLayout.getTabAt(i);
if (tab != null) {
TextView tabTextView =
(TextView) LayoutInflater.from(this).inflate(R.layout.tab_item, mTabLayout, false);
tabTextView.setText(tab.getText());
// First tab is the selected tab, so if i==0 then set Tabs_Selected style
tabTextView.setTextAppearance(getAppContext(), i == 0 ? R.style.TextAppearance_Tabs_Selected
: R.style.TextAppearance_Tabs);
tab.setCustomView(tabTextView);
}
}
}
class OnTabSelectedListener implements TabLayout.OnTabSelectedListener {
public void onTabSelected(TabLayout.Tab selectedTab) {
int tabCount = mTabLayout.getTabCount();
for (int i = 0; i < tabCount; i++) {
TabLayout.Tab tab = mTabLayout.getTabAt(i);
View tabView = tab != null ? tab.getCustomView() : null;
if (tabView instanceof TextView) {
((TextView) tabView).setTextAppearance(getAppContext(), selectedTab.equals(tab)
? R.style.TextAppearance_Tabs_Selected
: R.style.TextAppearance_Tabs);
}
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
Ed ecco le voci in styles.xml:
<style name="TextAppearance.Tabs" parent="TextAppearance.Design.Tab">
<item name="android:textSize">12sp</item>
<item name="android:textColor">@android:color/white</item>
</style>
<style name="TextAppearance.Tabs.Selected">
<item name="android:textStyle">bold</item>
</style>
E qui è il tab_item di layout:
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tab_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Tab 1" />
ho cambiato la risposta suggerita sopra un po 'e funziona benissimo per me, senza bisogno di ulteriori file .xml, spero che possa essere d'aiuto.
for (int i = 0; i < tabLayout.getTabCount(); i++) {
TabLayout.Tab tab = tabLayout.getTabAt(i);
if (tab != null) {
TextView tabTextView = new TextView(this);
tab.setCustomView(tabTextView);
tabTextView.getLayoutParams().width = ViewGroup.LayoutParams.WRAP_CONTENT;
tabTextView.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;
tabTextView.setText(tab.getText());
// First tab is the selected tab, so if i==0 then set BOLD typeface
if (i == 0) {
tabTextView.setTypeface(null, Typeface.BOLD);
}
}
}
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
TextView text = (TextView) tab.getCustomView();
text.setTypeface(null, Typeface.BOLD);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
TextView text = (TextView) tab.getCustomView();
text.setTypeface(null, Typeface.NORMAL);
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
Se si utilizza di default TabLayout (non CustomView), è possibile ottenere TextView della scheda utilizzando il metodo getChildAt().
.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
LinearLayout tabLayout = (LinearLayout)((ViewGroup) mMainTabs.getChildAt(0)).getChildAt(tab.getPosition());
TextView tabTextView = (TextView) tabLayout.getChildAt(1);
tabTextView.setTypeface(tabTextView.getTypeface(), Typeface.BOLD);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
LinearLayout tabLayout = (LinearLayout)((ViewGroup) mMainTabs.getChildAt(0)).getChildAt(tab.getPosition());
TextView tabTextView = (TextView) tabLayout.getChildAt(1);
tabTextView.setTypeface(tabTextView.getTypeface(), Typeface.NORMAL);
}
@Override
public void onTabReselected(TabLayout.Tab tab) { }
});
imposta il carattere in grassetto. ma non lo restituisce al carattere tipografico NORMALE su deselezionato ?? –
- 1. TabLayout scheda selezionata gravità
- 2. Stile testo su TabLayout
- 3. TabLayout L'icona della scheda selezionata non è selezionata all'avvio:
- 4. Aggiornamento dinamico di TabLayout senza modificare la scheda selezionata
- 5. TabLayout colore della scheda selezionata sottolineatura
- 6. Come si modifica lo stile di MediaRouteButton in ActionBar?
- 7. Testo scheda TabLayout non visualizzato
- 8. Come si modifica core.autocrlf quando si utilizza SmartGit?
- 9. Modifica ActionBar quando si utilizza frammenti
- 10. Come stile ActionBar, scheda sfondo nella scheda selezionata
- 11. Come si modifica lo stile della cella in un JQuery.DataTable?
- 12. Se si fa clic su schede, la scheda corrente non viene modificata quando si utilizza Android TabLayout
- 13. stile di transizione quando si utilizza setViewControllers: animato: l'UINavigationController
- 14. Quando si utilizza jQuery Mobile, come posso gestire lo stile quando JavaScript è disabilitato?
- 15. android: come cambiare lo stile del testo di modifica?
- 16. Quando si usa Handstable come forzare una cella selezionata in modalità di modifica?
- 17. Come si gestisce una modifica della password quando si utilizza WCF e DefaultCredentials?
- 18. Gradle - modifica Token di inizio/fine quando si utilizza ReplaceTokens
- 19. Quando si utilizza scrollTo ListView non si aggiorna, ma quando lo scorre manualmente si aggiorna
- 20. Come si ottiene la visualizzazione di una scheda in un TabLayout?
- 21. Come rilevare un clic su una scheda già selezionata in TabLayout
- 22. Definire lo stile TabLayout in tema
- 23. Chiedere conferma quando si chiude una scheda
- 24. Imposta il testo iniziale quando si modifica una cella QTableView
- 25. Nascondi quando si utilizza Exec()
- 26. Come si modifica il percorso di test predefinito in Eclipse quando si utilizza Maven?
- 27. Quando si utilizza ANTLR
- 28. Errore quando si utilizza un indice di testo su Mongodb
- 29. Modifica formato casella di testo quando si ridimensiona il modulo
- 30. Come si imposta la scheda selezionata in UITabBarController usando StoryBoard?
come faccio nel codice xml? –