2013-04-02 16 views
8

Tworzę niestandardową klasę TextView MTextView. Wewnątrz konstruktora chcę poznać wartość atrybutu style w tekście, aby ustawić różne kroje w zależności od tego, czy styl jest pogrubiony czy nie. Ale nie ma funkcji getStyle()? Co robić?Jak uzyskać atrybut stylu 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")); 
    } 



    } 

Odpowiedz

25

można uzyskać textstyle od sposobu getTypeface() przykład TextView użytkownika.

int style = getTypeface().getStyle(); 

Jeśli nie textstyle został określony (tj chcesz wesprzeć normalne textstyle) następnie getTypeface() może zwróci null.

W przypadku, gdy nie jest pusty, najlepiej jest założyć, że textStyle jest domyślnie ustawiony na normalny.

+0

oznaczyć go jako odpowiedź. –

+0

Facet wyraźnie chce uzyskać styl, ale nie z domyślnego kroju pisma, ponieważ tworzy go z pliku ttf. Nie powinien być oznaczony jako odpowiedź ... – Borzh

+0

To 'getTypeface()' na wypadek, gdyby ktoś zastanawiał się nad odpowiedzią – Till

1

użyć tego kodu:

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()); 
     } 
    } 
Powiązane problemy