Ma question est assez simple:
Dans chacune de mes vues de texte, j'utilise actuellement l'attribut
android:fontFamily="sans-serif-light"
pour fournir un look magnifique sur les appareils post HC.
Malheureusement, cela ne fonctionne pas avec tous les widgets et pour mes Spinners, je dois écraser l'adaptateur.
@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;
}
}
Alors, y a-t-il un moyen d'obtenir exactement le même résultat par code?
PS: Non, je ne veux pas mettre de police dans le dossier des ressources, je veux juste utiliser le système un.
Si vous utilisez le dossier res -> font, vous pouvez utiliser comme ceci
la source
À mon avis, il existe toujours un moyen d'appliquer des polices système par programme sur TextView sans avoir de problème de mémoire et qui utilise la
textview.setTextAppearance
méthode:la source
android:fontFamily
requiert l'API 16.TextViewCompat.setTextAppearance(textView, R.style.styleA)
.Dynamiquement, vous pouvez définir la famille de polices similaire à Android: fontFamily en XML en utilisant ceci,
Voici la liste des familles de polices par défaut utilisées, utilisez n'importe lequel de ces éléments en remplaçant la chaîne de guillemets doubles "sans-serif-medium"
"mycustomfont.ttf" est le fichier ttf. Le chemin sera dans src / assets / fonts / mycustomfont.ttf , vous pouvez en savoir plus sur la police par défaut dans cette famille de polices par défaut
la source
Option 1 - API 26 et plus
Option 2 - API 16 et plus
Consultez l'expiation complète dans le guide des développeurs Android .
la source
Ce serait possible en utilisant
setTypeface(Typeface tf, int style)
méthode deTextView
classe.spinner_text.setTypeface(Typeface.SANS_SERIF,Typeface.NORMAL);
la source