Intereting Posts

Использование пользовательского шрифта в viewpagerindicator

В моем проекте я использую шрифт android: fontFamily = "sans-serif-light" и работает нормально.

Я также использую библиотеку viewpagerindicator. Я хочу использовать шрифт android: fontFamily = "sans-serif-light" также в viewpagerindicator, но не могу найти, как это сделать

Я пробовал использовать android:fontFamily = "sans-serif-light" в <com.viewpagerindicator.TitlePageIndicator ... и в стиле, но безуспешно.

Я также пробовал:

 PageIndicator mIndicator = (TitlePageIndicator) findViewById (R.id.indicator); Typeface myTypeface = Typeface.createFromAsset (getAssets (), "fonts / Roboto-Light.ttf"); mIndicator.setTypeface (myTypeface); 

Но это не работает.

Я ценю любую помощь.

Спасибо и приветствую

Если я не ошибаюсь, вы хотите изменить шрифт заголовков в виде индикатора пейджера,

Я изменил библиотеку, чтобы добиться этого, для TabPageIndicator custome typeface я добавил это для TabPageIndicator.java

 private Typeface mTypeface; public void setTypeFace(Typeface tf) { this.mTypeface = tf; } 

А затем измените функцию addTab на это:

  private void addTab(int index, CharSequence text, int iconResId) { final TabView tabView = new TabView(getContext()); tabView.mIndex = index; tabView.setFocusable(true); tabView.setOnClickListener(mTabClickListener); tabView.setText(text); **if (mTypeface != null) { tabView.setTypeface(mTypeface); }** if (iconResId != 0) { tabView.setCompoundDrawablesWithIntrinsicBounds(iconResId, 0, 0, 0); } mTabLayout.addView(tabView, new LinearLayout.LayoutParams(0, MATCH_PARENT, 1)); } 

Теперь вы должны просто установитьTypeFace на свой табулятор-указатель, например:

 mTabPageIndicator = (TabPageIndicator) findViewById(R.id.tab_page_indicator); mTabPageIndicator.setTypeFace(Typeface.createFromAsset(getApplicationContext().getAssets(), "fonts/custome_font.ttf"); 

Я использую библиотеку ViewPageIndicator , вот как я это сделал (индекс – это индекс вкладки на вашем индикаторе страницы просмотра):

 private void changeTabText(int index, boolean on){ if(tabLayout.getChildCount()-1 >= index){ TextView tv = (TextView)tabLayout.getChildAt(index); tv.setTextColor(getResources().getColor(on? android.R.color.black : R.color.light_grey)); CustomFont.setTypeface(tv, CustomFont.NORMAL); } } 

Вот как я получил tablayout:

 tabLayout = (ViewGroup)indicator.getChildAt(0); //indicator is a horizontal scroll view, there will be only one root layout 

Вот что делает мой пользовательский шрифт:

  public static void setTypeface(TextView view, String font) { Typeface typeface = Typeface.createFromAsset(view.getContext().getAssets(), BASE_PATH + font); view.setTypeface(typeface); } 

Еще одна реализация OOD – это изменение библиотеки путем создания нового интерфейса:

 public interface FontPagerAdapter { /** * Get the fonts to set. */ Typeface getCustomFont();} 

А в классе TabPageIndicator.java добавить новое свойство:

 private Typeface customTypeFace; 

Который будет установлен в методе notifyDataSetChanged (), объявив:

 if (adapter instanceof FontPagerAdapter) { FontPagerAdapter fontAdapter = (FontPagerAdapter)adapter; customTypeFace = fontAdapter.getCustomFont(); } 

Позже вы измените шрифт, установив его программно в методе addTab, просто добавив:

 if (customTypeFace != null) { tabView.setTypeface(customTypeFace); } 

Наконец, в адаптере, который будет использовать библиотеку, вам необходимо реализовать этот интерфейс, а затем переопределить метод:

 @Override public Typeface getCustomFont() { Typeface font = Typeface.createFromAsset(context.getAssets(),"fonts/PoetsenOne-Regular.ttf"); return font; }