2013-04-02 5 views
8

Я создаю Custom TextView class MTextView. Внутри конструктора я хочу знать значение стиля, связанное с текстовым видом, чтобы я мог устанавливать разные шрифты в зависимости от того, установлен ли стиль в жирный или нет. Но нет функции getStyle()? Что делать?Как получить атрибут стиля TextView

public class MTextView extends TextView{ 

    public MTextView(Context context, AttributeSet attrs, int defStyle) { 
      super(context, attrs, defStyle); 
      if(style.equals(TypeFace.bold)) //how to get style? 
       setTypeface(Typeface.createFromAsset(getContext().getAssets(),"rc.ttf")); 
    } 



    } 

ответ

25

Вы можете получить TextStyle от метода getTypeface() экземпляра в TextView в.

int style = getTypeface().getStyle(); 

Если нет TextStyle не задан (т.е. вы хотите, чтобы поддерживать нормальный TextStyle), то getTypeface() может возвращать нуль.

В случае, если он не является нулевым, может быть лучше предположить, что textStyle неявно установлен в нормальное состояние.

+0

знак его в качестве ответа. –

+0

Парень явно хочет получить стиль, но не от шрифта по умолчанию, так как он создает его из файла ttf. Не следует отмечать как ответ ... – Borzh

+0

Это 'getTypeface()' в случае, если кто-то задается вопросом – Till

1

Используйте этот код:

if (attrs != null) { 
     try { 
      int style = attrs.getAttributeIntValue(
       "http://schemas.android.com/apk/res/android", 
       "textStyle", 
       Typeface.NORMAL); 

      setTypeface(Typeface.createFromAsset(
          getContext().getAssets(), 
          "rc.ttf"), 
         style); 
     } 
     catch (Exception e) { 
      Log.e(TAG, e.getMessage()); 
     } 
    } 
Смежные вопросы