Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

how to change text color and text font in android #60

Open
hmody23 opened this issue Mar 23, 2022 · 1 comment
Open

how to change text color and text font in android #60

hmody23 opened this issue Mar 23, 2022 · 1 comment

Comments

@hmody23
Copy link

hmody23 commented Mar 23, 2022

how to change text color and text font in android??

@Puesto4It
Copy link

Yo lo conseguí de esta forma.
Haces lo que te indica la libreria:
PaperOnboardingPage scr1 = new PaperOnboardingPage("Hotels",
"All hotels and hostels are sorted by hospitality rating",
Color.parseColor("#678FB4"), R.drawable.hotels, R.drawable.key);
PaperOnboardingPage scr2 = new PaperOnboardingPage("Banks",
"We carefully verify all banks before add them into the app",
Color.parseColor("#65B0B4"), R.drawable.banks, R.drawable.wallet);
PaperOnboardingPage scr3 = new PaperOnboardingPage("Stores",
"All local stores are categorized for your convenience",
Color.parseColor("#9B90BC"), R.drawable.stores, R.drawable.shopping_cart);

ArrayList elements = new ArrayList<>();
elements.add(scr1);
elements.add(scr2);
elements.add(scr3);

PaperOnboardingFragment onBoardingFragment = PaperOnboardingFragment.newInstance(elements);

Despues haces esto: // Listener para detectar cambios de página
onBoardingFragment.setOnChangeListener(new PaperOnboardingOnChangeListener() {
@OverRide
public void onPageChanged(int oldElementIndex, int newElementIndex) {
// Cambiar el color del texto de la nueva página
View currentPageView = onBoardingFragment.getView(); // Obtén la vista actual del fragmento
if (currentPageView != null) {
changeTextColor(currentPageView, Color.RED); // Cambia el color del texto
}
}
});

que eso lo que hará es cambiar el texto cada vez que cambies de página, pero la primera no se cambiará el color por lo que tienes que hacer lo siguiente, pones lo que sigue que te indica la libreria:
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.fragment_container, onBoardingFragment);
fragmentTransaction.commit();

y seguido haces esto:
// Usar ViewTreeObserver para esperar hasta que se dibuje la vista
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@OverRide
public void onGlobalLayout() {
view.getViewTreeObserver().removeOnGlobalLayoutListener(this);

            System.out.println("Las vistas han sido creadas. Ahora puedes intentar cambiar colores.");

            // Cambiar el color del texto a rojo, por ejemplo
            changeTextColor(view, Color.RED);
        }

    });

y te creas el siguiente método: private void changeTextColor(View view, int color) {
// Verifica si es un TextView y no un Button
if (view instanceof TextView && !(view instanceof Button)) {
TextView textView = (TextView) view;
textView.setTextColor(color); // Cambia el color del texto
}

    // Verificar si es un ViewGroup
    if (view instanceof ViewGroup) {
        ViewGroup group = (ViewGroup) view;
        for (int i = 0; i < group.getChildCount(); i++) {
            // Llamada recursiva para los hijos
            changeTextColor(group.getChildAt(i), color);
        }
    }
} 

en mi caso tengo esta condición !(view instanceof Button) para que no se aplique a un botón que he agregado.

Espero que os sirva de ayuda!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants