Meine Frage ist ganz einfach:
In jeder meiner Textansichten verwende ich derzeit das Attribut
android:fontFamily="sans-serif-light"
um einen wunderschönen Look auf Post-HC-Geräten zu bieten.
Leider funktioniert dies nicht mit jedem Widget und für meine Spinner muss ich den Adapter überschreiben.
@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;
}
}
Gibt es also eine Möglichkeit, mit Code genau das gleiche Ergebnis zu erzielen?
PS: Nein, ich möchte keine Schrift in den Asset-Ordner legen, sondern nur das erste System verwenden.
Wenn Sie den Ordner res -> font verwenden, können Sie diesen verwenden
quelle
Meiner Meinung nach gibt es immer noch eine Möglichkeit, Systemschriftarten programmgesteuert auf TextView anzuwenden, ohne dass Speicherprobleme auftreten, und dies unter Verwendung der folgenden
textview.setTextAppearance
Methode:quelle
android:fontFamily
erfordert API 16.TextViewCompat.setTextAppearance(textView, R.style.styleA)
.Dynamisch können Sie die Schriftfamilie ähnlich wie android: fontFamily in XML festlegen, indem Sie Folgendes verwenden:
Dies ist die Liste der verwendeten Standardschriftfamilien . Verwenden Sie diese Liste , indem Sie die doppelte Anführungszeichenfolge "serifenlos" ersetzen.
"mycustomfont.ttf" ist die ttf-Datei. Der Pfad befindet sich in src / assets / fonts / mycustomfont.ttf. Weitere Informationen zur Standardschrift finden Sie in dieser Standardschriftfamilie
quelle
Option 1 - API 26 und höher
Option 2 - API 16 und höher
Überprüfen Sie die vollständige Erklärung im Android Developers Guide .
quelle
Es wäre möglich mit
setTypeface(Typeface tf, int style)
Methode derTextView
Klasse.spinner_text.setTypeface(Typeface.SANS_SERIF,Typeface.NORMAL);
quelle