Ich habe eine ttf-Schriftartdatei in meinem Assets-Ordner. Ich weiß, wie man es für Textansichten verwendet mit:
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
textview1.setTypeface(externalFont);
Ich habe die Suche nach meinem Spinner-Text in einer eigenen XML-Datei definiert (wie in Android üblich):
<?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 diese Textansicht einfach nicht aus dem Code referenzieren, ich bekomme immer Nullzeigerausnahmen. ZB habe ich versucht:
TextView spinner_text=(TextView)findViewById(R.id.text1);
spinner_text.setTypeface(externalFont);
Ist es möglich, meine externe Schriftart auch für meinen Spinnertext auszuwählen, der in einer eigenen XML definiert ist?
Danke dir.
BEARBEITEN mit Antwort:
Das 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);
Es kann notwendig sein, hinzuzufügen
import android.view.ViewGroup;
Zu Ihrer Liste der Importe oben in Ihrer Datei. Aus irgendeinem Grund macht Eclipse diesen Vorschlag nicht, wenn die im Code enthaltene ViewGroup-Klasse nicht erkannt wird.
android
fonts
spinner
android-spinner
android-fonts
DixieFlatline
quelle
quelle
Antworten:
Dies hat bei mir funktioniert (unter Verwendung von Ideen aus den Antworten von CommonsWare und gsanllorente ):
Wenn Sie, wie ich, den Spinner ursprünglich mit
ArrayAdapter.createFromResource()
und einer Array-Ressource (wie in der Spinner-Dokumentation ) gefüllt haben, würden Sie MySpinnerAdapter wie folgt verwenden:quelle
assignAdapterWithOptions(Spinner spinner, int textArrayResId)
Methode, um den Kontext zu ermittelnspinner.getContext()
und den Adapter dem darin enthaltenen Spinner zuzuweisen (Spinner-Layouts sind für meine gesamte AppSie würden die Schriftart über Ihre eigene Gewohnheit
SpinnerAdapter
ingetView()
und anwendengetDropDownView()
.quelle
android.view.ViewGroup
vermutlichWenn Sie Ihren Adapter in einer anderen Datei implementieren, können Sie über den Konstruktor des Adapters auf die Funktion "getAssets ()" zugreifen, da Sie den Kontext als Parameter haben.
quelle
findViewById(R.id.text1)
schien die Textansicht nicht zu finden, obwohl die ID korrekt war. Einige andere Probleme in diesem Code: 1) fehlende return-Anweisung ingetView()
, 2) nicht verwendetes Feldrecurso
, 3) einige Stilprobleme wie das Benennen einer Variablenspinner_text
(sollte seinspinnerText
). Folgendes hat bei mir funktioniert .Versuchen Sie dies, erstellen Sie eine benutzerdefinierte custom_spinner.xml
Erstellen Sie eine benutzerdefinierte CheckedtextView wie folgt
Implementieren Sie das neue Layout
quelle
Dies ist die Fortsetzung meiner vorherigen Antwort: https://stackoverflow.com/a/51100507/787399
Schritt 1: Deklarieren Sie item_spinner.xml
Schritt 2: deklarieren Sie item_spinner_dropdown.xml:
Schritt 3: Verwenden Sie den Spinner im Layout:
[Hinweis: Die ID von FontTextView ist in den Layouts, im Spinner-Element und im Dropdown-Element identisch.]
Schritt 4: Verwenden Sie es in der Aktivität / Fragment:
[Weitere Hinweise finden Sie in meinem anderen Beitrag: https://stackoverflow.com/a/51077569/787399 und https://stackoverflow.com/a/22164007/787399 ]
quelle
Bitte folgen Sie den grundlegenden Anpassungen von FontTextView, FontEditView, FontRadioButton, FontCheckBox und FontButton.
[Die genaue Antwort finden Sie in diesem Handbuch unter: https://stackoverflow.com/a/51113022/787399 ]
Verwenden Sie benutzerdefiniertes FontTextView im ArrayAdapter-Elementlayout wie folgt:
Verwenden Sie den Code:
Beschreiben Sie Stil und Attribute in den jeweiligen xmls:
und
Definieren Sie weitere Stile:
Erwähnen Sie Schriftarten in Ihrer Datei strings.xml:
und in den Layouts verwenden, um Code und Zeit zu sparen:
Ab Android Level 16 wird dies alles vereinfacht, da Sie jetzt TTF und andere Schriftartenressourcen im
/res/font
Ordner und nicht in Assets aufbewahren können. Dadurch werden die meisten benutzerdefinierten Klassen, Stile und Attribute entfernt, siehe:Schriftarten in Android
Viel Spaß beim Codieren mit Stil !! :-)
quelle
Leute, ich habe eine großartige Lösung gefunden, ich wickle den Originaladapter per Helfer ein
Verwenden Sie diese Klasse SpinnerViewHelper und viel Spaß beim Programmieren mit Android
Der Lambda-Ausdruck wird verwendet.
quelle