Skocz do zawartości
daktarin

[android studio] zmiana fontu we wszytskich polach tekstowych view pagera

    Rekomendowane odpowiedzi

    Witajcie,

    mam view pager, do którego zaczytywane są cztery layouty (są one zbudowane w taki sam sposób: obrazek i dwa pola Text View)

     view_pager = (ViewPager) findViewById(R.id.view_pager);
    
    layouts = new int[] {
                R.layout.activity_screen_walk_1,
                R.layout.activity_screen_walk_2,
                R.layout.activity_screen_walk_3,
                R.layout.activity_screen_walk_4
            };
    
    viewPageAdapter = new ViewPageAdapter();
    view_pager.setAdapter(viewPageAdapter);
    view_pager.addOnPageChangeListener(viewPagerPageChangeListener);

    Wszystko działa ładnie, pięknie. ALE. Chciałbym zmienić font dla wszytskich poól tekstowych w layoutach zaczytywanych do view pgaera.

    W tym celu wpisuje kod:

     Typeface myFontBold = Typeface.createFromAsset(getAssets(), "fonts/Oswald-Bold.ttf");
    
    
            for (int count=0; count < view_pager.getChildCount(); count++){
                Toast.makeText(MainActivity.this, "ppp", Toast.LENGTH_SHORT).show();
                View view = view_pager.getChildAt(count);
                if(view instanceof TextView){
                    ((TextView)view).setTypeface(myFontBold);
                }
            }

    który niestety nie działa...

    Pomożecie?

    Pozdrawiam

    Marcin

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    A konkretnie to czym się objawia to niedziałanie? Znajduje w ogóle jakieś TextView? getChildAt zwraca pewnie tylko
    bezpośrednich potomków a tu struktura wygląda na bardziej skomplikowaną. Pewnie trzeba znaleźć każdy z tych
    fragmentów a potem zależnie od ich struktury szukać TextView. Trudno zgadnąć nie widząc całości.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    giaur500

    Powinno to być zrealizowane przez DataBinding, tutaj jest dokładnie to opisane: 

     

    Po zbindowaniu twojego activity i dodaniu BindingAdapter możesz po prostu podać nazwę fontu w xml-u i nie pisać takiego syfiastego kodu w javie. Wystarczy jeden BindingAdapter

     

    P.S. nadchodzące api Androida O znacznie upraszcza sprawę obsługi fontów.

    Edytowane przez giaur500
    • Lubię to! 1

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x