Я написал класс, чтобы обойти это ограничение. Он, похоже, работал в ограниченном тестировании, но я еще не написал приложение, в котором я нуждался. Обратите внимание, что предполагается, что пользовательский шрифт доступен как актив, и он делает статический вызов для получения контекста приложения (которому он должен получить доступ к ресурсу). Лучший подход будет проходить в контексте конструктора ..
import android.content.Context;
public class TypefaceResourceSpan extends MetricAffectingSpan implements ParcelableSpan {
private String resourceName_;
private Typeface tf_;
public TypefaceResourceSpan(String resourceName) {
super();
resourceName_=resourceName;
tf_=createTypeface(resourceName_);
}
public TypefaceResourceSpan(Parcel src) {
resourceName_ = src.readString();
tf_=createTypeface(resourceName_);
}
private Typeface createTypeface(String resourceName) {
Typeface result=null;
Context c=TikunKorimMain.getAppContext();
if (c==null) {
Log.e("TypefaceResourceSpan", "Application context is null!");
}
AssetManager am=c.getAssets();
if (am==null) {
Log.e("TypefaceResourceSpan", "AssetManager is null!");
}
result=Typeface.createFromAsset(am, resourceName);
return result;
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(resourceName_);
}
@Override
public void updateMeasureState(TextPaint p) {
Typeface old=p.getTypeface();
if (old != null && !old.isBold() && tf_.isBold()) {
p.setFakeBoldText(true);
}
if (old != null && !old.isItalic() && tf_.isItalic()) {
p.setTextSkewX(-0.25f);
}
p.setTypeface(tf_);
}
@Override
public void updateDrawState(TextPaint tp) {
Typeface old=tp.getTypeface();
if (old != null && !old.isBold() && tf_.isBold()) {
tp.setFakeBoldText(true);
}
if (old != null && !old.isItalic() && tf_.isItalic()) {
tp.setTextSkewX(-0.25f);
}
tp.setTypeface(tf_);
}
public int getSpanTypeId() {
// TODO does this work???!?
return 123456;
}
public int describeContents() {
return 0;
}
}
Вы смотрели на http://stackoverflow.com/questions/7338697/android-development-how-to-replace-part-of -an-edittext-with-a-spannable или http://stackoverflow.com/questions/8191414/using-spannablestring-builder-and-rich-text? – Alin
У кого-нибудь есть ответ на этот вопрос? Alin - эти вопросы и ответы не затрагивают использование пользовательского шрифта из папки с ресурсами. –
Привет, AamirKhan, пожалуйста, помогите мне, как вы решаете эту проблему. Я пытаюсь выбрать ответ, но не успех. – mukesh