11

の「動画」タブと「画像」タブのフォントを設定したいActionBarSherlock。そのために次のコードを使用しました。ICSでは正確に表示されますが、下位バージョンのデバイスでは表示されませんが、TYPE FACEを次のように設定することにより、このアプリケーションの他の部分で正確な出力を表示しました...

a.settypeface("ab.tttf");
a.settext("VIDEO");

しかし、このコードTypeFaceでを設定する方法は次のとおりです。ActionBar

mTabsAdapter.addTab(bar.newTab().setText("IMAGE"), AFragment.class, null);
mTabsAdapter.addTab(bar.newTab().setText("VIDEO"), BFragment.class, null);
4

6 に答える 6

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" />

次に、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);
}
于 2013-02-04T07:15:23.663 に答える
2

まず、プロジェクトで次のカスタムTypefaceSpanクラスを作成します。カスタム TypefaceSpan.otfのバージョンをビット変更して、フォントとフォントの両方を使用できるようにし.ttfます。

import java.util.StringTokenizer;

import android.content.Context;
import android.graphics.Typeface;
import android.support.v4.util.LruCache;
import android.text.TextPaint;
import android.text.style.MetricAffectingSpan;

public class TypefaceSpan extends MetricAffectingSpan{

    /*Cache to save loaded fonts*/
    private static LruCache<String, Typeface> typeFaceCache= new LruCache<String, Typeface>(12);
    private Typeface mTypeface;
    public TypefaceSpan(Context context,String typeFaceName)
    {
        StringTokenizer tokens=new StringTokenizer(typeFaceName,".");
        String fontName=tokens.nextToken();
        mTypeface=typeFaceCache.get(fontName);

        if(mTypeface==null)
        {
            mTypeface=Constants.getFont(context, typeFaceName);
            //cache the loaded font
            typeFaceCache.put(fontName, mTypeface);
        }
    }
    @Override
    public void updateMeasureState(TextPaint p) {
        p.setTypeface(mTypeface);
    }

    @Override
    public void updateDrawState(TextPaint tp) {
        tp.setTypeface(mTypeface);
    }

}

次のようなコードを適用します:(私はバングラアプリの1つでこれを使用しました)

        SpannableString mstKnwTitle=new SpannableString(getString(R.string.e_mustknow_tab));
        SpannableString cntctsTitle=new SpannableString(getString(R.string.e_number_tab));


        TypefaceSpan span=new TypefaceSpan(this, "solaimanlipi.ttf");

        mstKnwTitle.setSpan(span, 0, mstKnwTitle.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);     
        cntctsTitle.setSpan(span, 0, mstKnwTitle.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        Tab tab= actionBar.newTab();
        tab.setText(mstKnwTitle);
        tab.setTabListener(tabListener);

        actionBar.addTab(tab);


        tab= actionBar.newTab();
        tab.setText(cntctsTitle);
        tab.setTabListener(tabListener);

        actionBar.addTab(tab);

私の答えの元のインスピレーションは、カスタム書体を使用してAndroidアクションバーのタイトルをスタイリングすることでした

于 2013-05-15T13:25:13.130 に答える
2

これを試して:

String s = "VIDEO";
SpannableString mSS = new SpannableString(s);
mSS.setSpan(new StyleSpan(Typeface.BOLD), 0, s.length(), 0);
mTabsAdapter.addTab(bar.newTab().setText(mSS),
                BFragment.class, null);
于 2013-01-21T10:17:39.267 に答える
2

これを解決するには、Special 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);
    }
}

よろしく

于 2013-01-21T10:17:03.930 に答える
1

ご案内が届かないようです。私の答えの結果には確信が持てませんが、はい、あなたは思い通りにそれを作るためのアイデアを反抗的に得ることができます.

お手伝いさせてください。Android SDK の組み込みのデフォルト リソースをいじる必要があると思います。

カスタム スタイルを作成する必要があります。

<style name="MyActionBarTabText" parent="Widget.ActionBar.TabText">
    <item name="android:textAppearance">@style/TextAppearance.Holo.Medium</item>
    <item name="android:textColor">?android:attr/textColorPrimary</item>
    <item name="android:textSize">12sp</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textAllCaps">true</item>
    <item name="android:ellipsize">marquee</item>
    <item name="android:maxLines">2</item>
</style>

 <style name="Widget.ActionBar.TabText" parent="Widget">
    <item name="android:textAppearance">@style/TextAppearance.Widget.TextView.PopupMenu</item>
    <item name="android:textColor">?android:attr/textColorPrimaryInverse</item>
    <item name="android:textSize">18sp</item>
    <item name="android:fontFamily">HERE YOU CAN GIVE YOUR FONT</item>
</style>

この SOも参照できます。

そのテーマをアクティビティに適用するだけで、必要に応じて TabText のフォントを取得できます。

質問があればコメントしてください。

コーディングを楽しんでください... :)

エクストラで

別の解決策は、タブの画像を変更してテキストを含め、GIMPまたは Photoshop で何かを作成し、画像とテキストの代わりにそれらの画像をタブに設定することです。少し厄介な方法ですが、うまくいくでしょう。

お役に立てれば!

于 2013-02-08T05:50:37.683 に答える