android– 如何更改导航抽屉字体?

android– 如何更改导航抽屉字体?,第1张

概述我想在android中使用我自己的字体导航抽屉.我根据这个答案使用android自带的工作室:https://stackoverflow.com/a/23632492/4393226.但我不知道如何更改字体并使其成为RTL.我搜索了很多,我发现了如何制作抽屉RTL.我用这个代码:getWindow().getDecorView().setLayoutDirection(View

我想在android中使用我自己的字体导航抽屉.我根据这个答案使用androID自带的工作室:https://stackoverflow.com/a/23632492/4393226.
但我不知道如何@R_418_6502@并使其成为RTL.
我搜索了很多,我发现了如何制作抽屉RTL.我用这个代码:

getwindow().getDecorVIEw().setLayoutDirection(VIEw.LAYOUT_DIRECTION_RTL);


Android – Is Navigation Drawer from right hand side possible?

但正如您所知,这仅适用于API 17及更高版本.
请帮忙!如何更改菜单字体?如何以正确的方式进行布局RTL?!

编辑:
我的字体“TTF”文件是资产/字体,我知道如何使用java为textvIEw设置它,但我不知道如何将其设置为导航抽屉菜单.

解决方法:

我找到了答案:
首先在项目中创建此类:

import androID.graphics.Paint;import androID.graphics.Typeface;import androID.text.TextPaint;import androID.text.style.TypefaceSpan;public class CustomTypefaceSpan extends TypefaceSpan {    private final Typeface newType;    public CustomTypefaceSpan(String family, Typeface type) {        super(family);        newType = type;    }    @OverrIDe    public voID updateDrawState(TextPaint ds) {        applyCustomTypeFace(ds, newType);    }    @OverrIDe    public voID updateMeasureState(TextPaint paint) {        applyCustomTypeFace(paint, newType);    }    private static voID applyCustomTypeFace(Paint paint, Typeface tf) {        int oldStyle;        Typeface old = paint.getTypeface();        if (old == null) {            oldStyle = 0;        } else {            oldStyle = old.getStyle();        }        int fake = oldStyle & ~tf.getStyle();        if ((fake & Typeface.BolD) != 0) {            paint.setFakeBoldText(true);        }        if ((fake & Typeface.ITAliC) != 0) {            paint.setTextSkewX(-0.25f);        }        paint.setTypeface(tf);    }}

然后将此方法添加到您想要更改导航抽屉菜单字体的活动中:

private voID applyFontToMenuItem(MenuItem mi) {        Typeface Font = Typeface.createFromAsset(getAssets(), "ds_digi_b.TTF");        SpannableString mNewTitle = new SpannableString(mi.getTitle());        mNewTitle.setSpan(new CustomTypefaceSpan("" , Font), 0 , mNewTitle.length(),  Spannable.SPAN_INCLUSIVE_INCLUSIVE);        mi.setTitle(mNewTitle);}

然后添加调用您刚刚在活动中添加的方法:

navVIEw = (NavigationVIEw) findVIEwByID(R.ID.navVIEw);Menu m = navVIEw.getMenu();for (int i=0;i<m.size();i++) {    MenuItem mi = m.getItem(i);    //for aapplying a Font to subMenu ...    SubMenu subMenu = mi.getSubMenu();    if (subMenu!=null && subMenu.size() >0 ) {        for (int j=0; j <subMenu.size();j++) {            MenuItem subMenuItem = subMenu.getItem(j);            applyFontToMenuItem(subMenuItem);        }    }    //the method we have create in activity    applyFontToMenuItem(mi);}
总结

以上是内存溢出为你收集整理的android – 如何更改导航抽屉字体?全部内容,希望文章能够帮你解决android – 如何更改导航抽屉字体?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1098590.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存