2014-01-21 2 views
2

Я хочу, чтобы сменил семейство шрифтов на EditText setError().Изменить шрифт family of EditText setError()

Я попытался это:

editText.setError(Html.fromHtml("<span style=\"font-family: sans-serif !important\">hello</span>")); 

Я хочу изменить семейство шрифтов для сообщения об ошибке в Samsung мобильный, когда пользователь выбрал другой шрифт.

Любая идея будет оценена по достоинству.

Заранее спасибо

+0

Помогает ли это добавить точку с запятой после важности? Это было бы верно css ... – Manu

+0

Спасибо за ответ Manu, я пробовал, но он все еще не работает. – sastresa

+0

В этом сообщении объясняется, как стиль текста редактирования: http://stackoverflow.com/questions/14413575/how-to -write-style-to-error-text-of-edittext-in-android – Manu

ответ

3

вы можете попробовать это:

Typeface typeFaceDefault = Typeface.createFromAsset(getAssets(), "BYekan.ttf"); 

TextInputLayout inputLayout = (TextInputLayout) view.findViewById(R.id.lyt_input); 

SpannableStringBuilder ssbuilder = new SpannableStringBuilder(getString(R.string.err_wrong_input)); 
ssbuilder.setSpan(new CustomTypefaceSpan("", ActivityMain.typeFaceDefault), 0, ssbuilder.length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);  
inputLayout.setError(ssbuilder); 

, то вы также включили этот файл в вашем проекте:

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); 
    } 
} 
Смежные вопросы