2014-09-11 10 views
6

Ändern der Schriftart in NumberPicker. Ich versuche es so, aber die Schrift ändert sich nicht. Irgendeine Idee? P.S: Farbe und Textgröße sind Änderungen.Einstellung typeFace to NumberPicker

public class NumberPicker extends android.widget.NumberPicker { 
     private Context context; 
     private Typeface tfs; 
     public NumberPicker(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     this.context = context; 
     tfs = Typeface.createFromAsset(context.getAssets(),"fonts/font.ttf"); 
     } 

     @Override 
     public void addView(View child) { 
     super.addView(child); 
     updateView(child); 
     } 

     @Override 
     public void addView(View child, int index, android.view.ViewGroup.LayoutParams params) { 
     super.addView(child, index, params); 
     updateView(child); 
     } 

     @Override 
     public void addView(View child, android.view.ViewGroup.LayoutParams params) { 
     super.addView(child, params); 
     updateView(child); 
     } 

     private void updateView(View view) { 
     if(view instanceof EditText){ 
      ((EditText) view).setTypeface(tfs); 
      ((EditText) view).setTextSize(25); 
      ((EditText) view).setTextColor(Color.RED); 
     } 
     } 

    } 

Schrift und Pfad funktionieren ordnungsgemäß. Ich verwende es für meine benutzerdefinierten Textansichten.

+0

haben Sie eine Lösung? –

+0

ja, Nummernauswahl ist eine View-Gruppe, also warum, zuerst müssen Sie überschreiben Sie benutzerdefinierte Klasse, die android.widget.NumberPicker erweitern, als Code von NumberPicker schauen, die in Android eingebettet und alle Komponenten auf die Gruppen und finden es dynamisch in Code, als Komponenten aus separaten Ansichtsgruppen erhalten. picker-> viewGroups-> EditText – once2go

Antwort

0

In Ihrer updateView(View view) Methode

Lösung 1

private void updateView(View view) { 
    if(view instanceof EditText){ 
     ((EditText) view).setTypeface(Typeface.SERIF); 
     ((EditText) view).setTextSize(25); 
     ((EditText) view).setTextColor(Color.RED); 
    } 

Für andere Schriften siehe here.

Lösung 2

Wenn Sie Ihre eigene .ttf Datei für Schriftart haben, erstellen Sie einen Ordner Schriftarten auf Assets Ordner und legen Sie Ihre .ttf Font-Datei, dann in onCreate() Funktion schreiben:

Typeface type = Typeface.createFromAsset(getAssets(),"fonts/yours_font.ttf"); 
((EditText) view).setTypeface(type); 

Lösung 3

Siehe this SO question für eine wunderbare Art und Weise chieving was du willst.Hoffen das hilft.

+2

Kannst du meinen Beitrag sehen? Ich beschreibe meine Klasse! Korrekt beschreibe ich, wie ich die Standardansicht überschreibe. Eigentlich mache ich das gleiche, dass Sie schreiben, aber Schriftart nicht – once2go

+2

Wie bekomme ich Context in updateView()? –

+0

Verwenden Sie 'getContext()' –

1

Ich fixiere das gleiche Problem durch gesetzt Typeface Daten in addView wie Code unten:

public class CustomNumberPicker extends android.widget.NumberPicker { 

Typeface type; 

public CustomNumberPicker(Context context, AttributeSet attrs) { 
    super(context, attrs); 

} 

@Override 
public void addView(View child) { 
    super.addView(child); 
    updateView(child); 
} 

@Override 
public void addView(View child, int index, 
     android.view.ViewGroup.LayoutParams params) { 
    super.addView(child, index, params); 
    type = Typeface.createFromAsset(getContext().getAssets(), 
      "fonts/b_yekan.ttf"); 
    updateView(child); 
} 

@Override 
public void addView(View child, android.view.ViewGroup.LayoutParams params) { 
    super.addView(child, params); 

    type = Typeface.createFromAsset(getContext().getAssets(), 
      "fonts/b_yekan.ttf"); 
    updateView(child); 
} 

private void updateView(View view) { 

    if (view instanceof EditText) { 
     ((EditText) view).setTypeface(type); 
     ((EditText) view).setTextSize(25); 
     ((EditText) view).setTextColor(getResources().getColor(
       R.color.text_dark_grey)); 
    } 

} 

} 
0

Es ist nicht sehr saubere Lösung, aber wenn Sie die Schrift in updateView gesetzt, es funktioniert: - |

private void updateView(View view) { 
    Typeface tfs = Typeface.createFromAsset(context.getAssets(),"fonts/font.ttf"); 
    if (view instanceof EditText) { 
     ((EditText) view).setTypeface(tfs); 
     ((EditText) view).setTextSize(25); 
     ((EditText) view).setTextColor(getResources().getColor(
      R.color.text_dark_grey)); 
    } 
} 
Verwandte Themen