android getassets权限,android – 添加自定义字体时无法解析方法getAssets()

我认为你在Adapter类中遇到了这个问题.更新您的Adapter类,如下所示:

....................

................................

public class YourAdapter extends ......

{

.........

..............

Typeface font;

public YourAdapter(Context context, ...........)

{

super(context, ..........);

font = Typeface.createFromAsset(context.getAssets(), "fonts/nexalight.otf");

}

...............

........................

@Override

public View getView(int position, View convertView, ViewGroup parent) {

if (convertView == null) {

convertView = letterInf.inflate(R.layout.letter, parent, false);

}

Button letterBtn = (Button ) convertView.findViewById(R.id.YOUR_BUTTON_ID);

letterBtn.setText(letters[position]);

letterBtn.setTypeface(font);

return convertView;

}

...................

.........................

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用TypefaceSpan或StyleSpan与自定义字体,您需要创建一个自定义的TypefaceSpan或StyleSpan类,并在其中设置您想要使用的字体。 以下是一个示例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); } } ``` 要使用此自定义TypefaceSpan类,您可以使用以下代码: ``` Typeface customTypeface = Typeface.createFromAsset(getAssets(), "fonts/your_custom_font.ttf"); SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder("Your text here"); CustomTypefaceSpan customTypefaceSpan = new CustomTypefaceSpan("", customTypeface); spannableStringBuilder.setSpan(customTypefaceSpan, 0, spannableStringBuilder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); yourTextView.setText(spannableStringBuilder); ``` 同样,您也可以创建一个自定义的StyleSpan类,以设置自定义字体: ``` public class CustomStyleSpan extends StyleSpan { private final Typeface newType; public CustomStyleSpan(int style, Typeface type) { super(style); 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); } } ``` 然后,您可以使用以下代码来设置自定义字体: ``` Typeface customTypeface = Typeface.createFromAsset(getAssets(), "fonts/your_custom_font.ttf"); SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder("Your text here"); CustomStyleSpan customStyleSpan = new CustomStyleSpan(Typeface.BOLD_ITALIC, customTypeface); spannableStringBuilder.setSpan(customStyleSpan, 0, spannableStringBuilder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); yourTextView.setText(spannableStringBuilder); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值