ActionBarSherlock选项卡的自定义字体

use*_*671 11 android actionbarsherlock

我想为其中的"视频"和"图像"标签设置字体ActionBarSherlock.我使用以下代码来执行此操作.它在ICS中准确显示,但在较低版本的设备中没有显示,但我通过设置TYPE FACE,在本应用程序的其他部分显示了准确的输出...

a.settypeface("ab.tttf");
a.settext("VIDEO");
Run Code Online (Sandbox Code Playgroud)

但如何做我设置TypeFaceActionBar此代码:

mTabsAdapter.addTab(bar.newTab().setText("IMAGE"), AFragment.class, null);
mTabsAdapter.addTab(bar.newTab().setText("VIDEO"), BFragment.class, null);
Run Code Online (Sandbox Code Playgroud)

Pur*_*war 9

好的 .我自己发现了一些关于SO的地方.

首先在其中创建一个xml文件:tab_title.xml

<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/action_custom_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My Custom title"
android:textColor="#fff"
android:textSize="18sp"
android:paddingTop="5dp" />
Run Code Online (Sandbox Code Playgroud)

然后在您实例化ActionBar的类中,使用此代码在每个选项卡上设置文本.(此示例使用ActionBarSherlock.)

ActionBar bar = getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

String[] tabNames = {"Tab 1","Tab 2","Tab 3"};

for(int i = 0; i<bar.getTabCount(); i++){
    LayoutInflater inflater = LayoutInflater.from(this);
    View customView = inflater.inflate(R.layout.tab_title, null);

    TextView titleTV = (TextView) customView.findViewById(R.id.action_custom_title);
    titleTV.setText(tabNames[i]);
    //Here you can also add any other styling you want.

    bar.getTabAt(i).setCustomView(customView);
}
Run Code Online (Sandbox Code Playgroud)


Ben*_*nnX 2

为了解决这个问题,您可以创建一个特殊的 Actionbar 类。只需创建一个类myBar extends Sherlockactionbar并放入 settypeface 即可。如果您现在在视图中创建该栏,它将具有您希望的字体。例如,这是一个带有新字体的按钮。

public class ChangedButton extends Button{

    public ChangedButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        Typeface font = Typeface.createFromAsset(context.getAssets(), "fonts/viking2.TTF");
        this.setTypeface(font);
    }
}
Run Code Online (Sandbox Code Playgroud)

问候