2013-04-02 19 views
8

Sto creando una classe TextView personalizzata MTextView. All'interno del costruttore voglio conoscere il valore dell'attributo style del textview in modo che possa impostare diversi caratteri tipografici a seconda che lo stile sia impostato in grassetto o meno. Ma non esiste una funzione getStyle()? Cosa fare?Come ottenere l'attributo style di un 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")); 
    } 



    } 

risposta

25

È possibile ottenere il TEXTSTYLE dal metodo di getTypeface() esempio del TextView.

int style = getTypeface().getStyle(); 

Se è stato specificato alcun TEXTSTYLE (vale a dire che si desidera supportare normale textstyle) poi getTypeface() può restituire null.

Nel caso in cui non sia null, è consigliabile assumere che textStyle sia implicitamente impostato su normale.

+0

marchio come una risposta. –

+0

Il ragazzo vuole chiaramente ottenere lo stile ma non dal carattere tipografico predefinito, poiché lo crea dal file ttf. Non dovrebbe essere contrassegnato come risposta ... – Borzh

+0

È 'getTypeface()' nel caso in cui qualcuno si chiede – Till

1

di questo codice:

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()); 
     } 
    }