Wie programmgesteuert Schriftart-Schriftart zu Spinner-Text festlegen?
Ich habe eine ttf-schriftart-Datei in meinen Ordner "assets". Ich weiß, wie Sie es für die textviews mit:
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
textview1.setTypeface(externalFont);
Habe ich definiert Aussehen für meine spinner-text in einem eigenen xml-Datei (wie üblich haben Sie in android):
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:textColor="#ffffff"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee" />
Ich kann einfach nicht auf diese textview aus dem code, ich bekomme immer null-pointer-exceptions. E. g. ich habe versucht:
TextView spinner_text=(TextView)findViewById(R.id.text1);
spinner_text.setTypeface(externalFont);
Ist es möglich, zu wählen, meine externe schriftart auch für meine spinner-text definiert, in einem eigenen xml?
Danke.
EDIT mit Antwort:
Dies funktioniert:
String [] items = new String[2];
items[0]="Something1";
items[1]="Something2";
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.spinaca, items) {
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
((TextView) v).setTypeface(externalFont);
return v;
}
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View v =super.getDropDownView(position, convertView, parent);
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
((TextView) v).setTypeface(externalFont);
v.setBackgroundColor(Color.GREEN);
return v;
}
};
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
Kann es notwendig sein, fügen Sie
import android.view.ViewGroup;
Zur Liste der Importe an den Anfang der Datei. Für einige Grund, warum Eclipse nicht machen, dieser Vorschlag, wenn es nicht erkennt, die ViewGroup-Klasse eingebunden in den code.
InformationsquelleAutor der Frage DixieFlatline | 2011-03-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist was für mich gearbeitet (mit Ideen sowohl aus CommonsWare ist und gsanllorente ist Antworten):
Wenn Sie, wie ich, ursprünglich besiedelten die Spinner mit
ArrayAdapter.createFromResource()
und ein array resource (wie im Spinner Dokumentation), dann würden Sie verwenden MySpinnerAdapter wie diese:InformationsquelleAutor der Antwort Jonik
Würden Sie anwenden, die Schrift durch Ihre eigenen benutzerdefinierten
SpinnerAdapter
imgetView()
undgetDropDownView()
.InformationsquelleAutor der Antwort CommonsWare
Wenn Sie bei der Umsetzung Ihrer Adapter in eine andere Datei, die Sie zugreifen können, die "getAssets ()" - Funktion aus dem Konstruktor des Adapters, wie Sie den Context als parameter.
InformationsquelleAutor der Antwort gsanllorente
Versuchen, das erstellen von benutzerdefinierten custom_spinner.xml
Erstellen von benutzerdefinierten CheckedtextView wie diese
implemente das neue layout
InformationsquelleAutor der Antwort joe1327
Bitte Folgen Sie grundlegende Anpassung der FontTextView, FontEditView, FontRadioButton, FontCheckBox und FontButton.
[ Für die genaue Antwort, nachdem ich diese Anleitung finden Sie hier:
https://stackoverflow.com/a/51113022/787399 ]
Verwenden Sie benutzerdefinierte FontTextView, in ArrayAdapter Artikel layout, wie dieses:
verwenden Sie den code:
Beschreiben Stil und Attribute in den jeweiligen XML-Dateien:
und
definieren einige weitere Stile:
erwähnen Schriftarten in Ihrem strings.xml:
und in den layouts spart code und Zeit:
Frohes Programmieren mit Stil!! 🙂
InformationsquelleAutor der Antwort Abhinav Saxena
Dies ist die Fortsetzung meiner vorherigen Antwort: https://stackoverflow.com/a/51100507/787399
Schritt 1: erklären item_spinner.xml
Schritt 2: deklarieren item_spinner_dropdown.xml:
Schritt 3: Verwenden Sie die spinner in der layout -:
[Hinweis: die id der FontTextView ist die gleiche in beiden layouts, spinner Element und drop-down-Element]
Schritt 4: verwenden Sie es in der Aktivität/Fragment:
[ weitere Hinweise siehe meinen anderen post: https://stackoverflow.com/a/51077569/787399 und https://stackoverflow.com/a/22164007/787399 ]
InformationsquelleAutor der Antwort Abhinav Saxena
Jungs fand ich eine tolle Lösung, ich wickle orignal-adapter durch Helfer wie
Verwenden Sie diese Klasse SpinnerViewHelper und glücklich progamming mit Android
Lambda-Ausdruck verwendet wird.
InformationsquelleAutor der Antwort Qamar4P