Mi pregunta es bastante simple:
En cada una de mis vistas de texto, actualmente estoy usando el atributo
android:fontFamily="sans-serif-light"
para proporcionar una apariencia hermosa en dispositivos post HC.
Desafortunadamente, esto no funciona con todos los widgets y para mis Spinners, necesito sobrescribir el Adaptador.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//You can use the new tf here.
if(convertView == null || convertView.getTag() == null) {
// new view - populate
convertView = inflater.inflate(android.R.layout.simple_spinner_dropdown_item, parent, false);
convertView.setTag(new Object());
}
CheckedTextView spinner_text=(CheckedTextView) convertView.findViewById(android.R.id.text1);
//Typeface should be set here...
return spinner_text;
}
}
Entonces, ¿hay alguna manera de obtener exactamente el mismo resultado por código?
PD: No, no quiero poner un tipo de letra en la carpeta de activos, solo quiero usar el sistema uno.
Si está usando res -> carpeta de fuentes, puede usar así
fuente
En mi opinión, todavía hay una forma de aplicar las fuentes del sistema mediante programación en TextView sin tener ningún problema de memoria y es mediante el
textview.setTextAppearance
método:fuente
android:fontFamily
requiere API 16.TextViewCompat.setTextAppearance(textView, R.style.styleA)
.Dinámicamente, puede configurar fontfamily similar a android: fontFamily en xml usando esto,
Esta es la lista de la familia de fuentes predeterminada utilizada, use cualquiera de esto reemplazando la cadena de comillas dobles "sans-serif-medium"
"mycustomfont.ttf" es el archivo ttf. La ruta estará en src / assets / fonts / mycustomfont.ttf , puede consultar más sobre la fuente predeterminada en esta familia de fuentes predeterminada
fuente
Opción 1 : API 26 y superior
Opción 2 : API 16 y superior
Consulte la expiación completa en la Guía para desarrolladores de Android .
fuente
Sería posible usando
setTypeface(Typeface tf, int style)
método deTextView
clase.spinner_text.setTypeface(Typeface.SANS_SERIF,Typeface.NORMAL);
fuente