Minha pergunta é bastante simples:
Em todas as minhas visualizações de texto, estou usando o atributo
android:fontFamily="sans-serif-light"
para fornecer uma aparência deslumbrante em dispositivos pós-HC.
Infelizmente, isso não funciona com todos os widgets e para meus Spinners, preciso substituir o 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;
}
}
Então, há uma maneira de obter exatamente o mesmo resultado por código?
PS: Não, não quero colocar uma fonte na pasta de ativos, quero apenas usar o sistema um.
Se você estiver usando res -> pasta de fontes, você pode usar assim
fonte
Na minha opinião, ainda há uma maneira de aplicar fontes do sistema programaticamente no TextView sem nenhum problema de memória e que é usando o
textview.setTextAppearance
método:fonte
android:fontFamily
requer API 16.TextViewCompat.setTextAppearance(textView, R.style.styleA)
.Dinamicamente, você pode definir o fontfamily semelhante ao android: fontFamily em xml usando isso,
Esta é a lista de famílias de fontes padrão usadas, use qualquer uma delas substituindo a string de aspas duplas "sans-serif-medium"
"mycustomfont.ttf" é o arquivo ttf. O caminho estará em src / assets / fonts / mycustomfont.ttf , você pode consultar mais sobre a fonte padrão nesta família de fontes padrão
fonte
Opção 1 - API 26 e superior
Opção 2 - API 16 e superior
Verifique a expiação completa em Android Developers Guide .
fonte
Seria possível usando
setTypeface(Typeface tf, int style)
método deTextView
aula.spinner_text.setTypeface(Typeface.SANS_SERIF,Typeface.NORMAL);
fonte