Changer les onglets de couleur de texte dans TabLayout de couleurs différentes par programmation
J'ai 7 dates onglets dans mon écran, lors de l'onglet sélectionné, le texte est de couleur noire; tandis que d'autres sélectionnez-mesure pattes sont de couleur blanche. Si la date tombe un mois, je veux de la couleur du texte pour être en couleur gris.
J'ai pris le premier onglet est 0, la deuxième onglet est 1, et continue jusqu'à 6.
Comme dans l'image, je veux changer la couleur du texte de l'onglet(3), tab(4), tab(5) et la languette(6). Comment pourrait-il en être fait par programmation, quand il répondre aux exigences de la condition (non xml), pour définir la couleur du texte dans ces 4 onglets gris?
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin">
<TextView
android:id="@+id/lblWeekMsg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/week"
android:textAppearance="?attr/textAppearanceListItem" />
<TextView
android:id="@+id/lblWeekNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/lblWeekMsg"
android:layout_alignBaseline="@id/lblWeekMsg"
android:text=""
android:textAppearance="?attr/textAppearanceListItem" />
</RelativeLayout>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinator_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="30">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/app_bar_layout">
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabTextColor="@android:color/white"
app:tabMode="scrollable"
app:tabGravity="fill" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
J'ai utilisé ce moyen pour créer des onglets avec fragment
public void setupViewPager(ViewPager viewPager, ArrayList<String> id, ArrayList<String> tasks,
ArrayList<Double> mondayHours, ArrayList<Double> tuesdayHours,
ArrayList<Double> wednesdayHours, ArrayList<Double> thursdayHours,
ArrayList<Double> fridayHours, ArrayList<Double> saturdayHours,
ArrayList<Double> sundayHours) {
Bundle bundle = new Bundle();
bundle.putStringArrayList(EXTRA_CHECKED_TASK_ID, id);
bundle.putStringArrayList(EXTRA_CHECKED_TASKS, tasks);
bundle.putSerializable(EXTRA_MONDAY, mondayHours);
bundle.putSerializable(EXTRA_TUESDAY, tuesdayHours);
bundle.putSerializable(EXTRA_WEDNESDAY, wednesdayHours);
bundle.putSerializable(EXTRA_THURSDAY, thursdayHours);
bundle.putSerializable(EXTRA_FRIDAY, fridayHours);
bundle.putSerializable(EXTRA_SATURDAY, saturdayHours);
bundle.putSerializable(EXTRA_SUNDAY, sundayHours);
final String MON = "MON" + "\n" + MainActivity.sevenDatesList.get(0);
final String TUE = "TUE" + "\n" + MainActivity.sevenDatesList.get(1);
final String WED = "WED" + "\n" + MainActivity.sevenDatesList.get(2);
final String THU = "THU" + "\n" + MainActivity.sevenDatesList.get(3);
final String FRI = "FRI" + "\n" + MainActivity.sevenDatesList.get(4);
final String SAT = "SAT" + "\n" + MainActivity.sevenDatesList.get(5);
final String SUN = "SUN" + "\n" + MainActivity.sevenDatesList.get(6);
adapter = new ViewPagerAdapter(getSupportFragmentManager(), bundle);
adapter.addFragment(new MondayFragment(), MON);
adapter.addFragment(new TuesdayFragment(), TUE);
adapter.addFragment(new WednesdayFragment(), WED);
adapter.addFragment(new ThursdayFragment(), THU);
adapter.addFragment(new FridayFragment(), FRI);
adapter.addFragment(new SaturdayFragment(), SAT);
adapter.addFragment(new SundayFragment(), SUN);
viewPager.setAdapter(adapter);
}
J'avais essayé sur cette, mais mon code n'était pas à l'aide de tabWidget.
J'avais essayé sur cette trop, mais mon code n'était pas à l'aide de tabHost.
Ma solution basée sur @Bhavesh Misri suggestion:
ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0);
//get number of tab
int tabsCount = vg.getChildCount();
//loop the tab
for (int j = 0; j < tabsCount; j++) {
//get view of selected tab
ViewGroup vgTab = (ViewGroup) vg.getChildAt(j);
//when the day is not required to display - out of range
if( j<lesserThan || j>largerThan ){
//disable the selected tab
vgTab.setEnabled(false);
//set the not-required tab color transparent ratio
vgTab.setAlpha((float) 0.50);
}
}
Merci pour le rappel, j'ai ajouté de l'extrait de code.
Êtes-vous à l'aide de toute la mise en page personnalisée pour rendre onglet texte? Aussi pourquoi vous ajoutez des fragments dans l'adaptateur à l'aide de méthode personnalisée addFragment que remplacer getItem(int position) déjà là en FragmentPagerAdapter pour le même but?
OriginalL'auteur CHAN HAU YEEN | 2016-12-02
Vous devez vous connecter pour publier un commentaire.
Essayer cela et laissez-moi savoir si cela fonctionne pour vous:
@Surya Prakash Kushawah votre chemin, c'est mieux.
votre accueil
votre tabLayout.getTabAt(0).getIcon().setAlpha(100); m'a donné l'idée, merci beaucoup!
Heureux pourrait aider 🙂
OriginalL'auteur Bhavesh Misri
onglet couleur du texte de cette façon :
Merci, ça fonctionne
OriginalL'auteur shivang Trivedi
Créer un style dans style.xml et l'appel en xml de mise en page comme ci-dessous
Appel ici
alors vous pouvez aller sur stackoverflow.com/a/40928932/5209766
OriginalL'auteur Surya Prakash Kushawah
La solution basée sur mon code ci-dessus:
OriginalL'auteur CHAN HAU YEEN