3

在我的项目中,我使用字体 android: fontFamily = "sans-serif-light",并且工作正常。

我也在使用库 viewpagerindicator。我想在viewpagerindicator中也使用字体android:fontFamily =“sans-serif-light”,但找不到怎么做

我尝试过使用android:fontFamily = "sans-serif-light"in<com.viewpagerindicator.TitlePageIndicator ...和 in style ,但没​​有成功。

我也试过:

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

但这不起作用..

我很感激任何帮助。

谢谢并恭祝安康

4

3 回答 3

10

如果我没有误会你,你想在视图寻呼机指示器中更改标题字体,

我更改了库来实现这一点,对于 TabPageIndicator 自定义字体,我为 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));
}

现在你应该在你的 tabpagerindicator 上设置 TypeFace,像这样:

mTabPageIndicator = (TabPageIndicator) findViewById(R.id.tab_page_indicator);
mTabPageIndicator.setTypeFace(Typeface.createFromAsset(getApplicationContext().getAssets(), "fonts/custome_font.ttf");
于 2013-07-19T13:40:39.793 回答
0

我正在使用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 = (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);
}
于 2014-02-12T15:33:59.763 回答
0

一个更OOD的实现是通过创建一个新的接口来修改Library:

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;
}
于 2014-07-09T20:33:46.797 回答