J'ai un fichier de police ttf dans mon dossier de ressources. Je sais comment l'utiliser pour les vues de texte avec:
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
textview1.setTypeface(externalFont);
J'ai défini le look de mon texte spinner dans son propre fichier xml (comme d'habitude dans 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" />
Je ne peux tout simplement pas référencer cette vue de texte à partir du code, j'obtiens toujours des exceptions de pointeur nul. Par exemple, j'ai essayé:
TextView spinner_text=(TextView)findViewById(R.id.text1);
spinner_text.setTypeface(externalFont);
Est-il possible de sélectionner ma police externe même pour mon texte spinner défini dans son propre XML?
Je vous remercie.
MODIFIER avec réponse:
Cela marche:
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);
Il peut être nécessaire d'ajouter
import android.view.ViewGroup;
À votre liste d'importations en haut de votre fichier. Pour une raison quelconque, Eclipse ne fait pas cette suggestion lorsqu'il ne reconnaît pas la classe ViewGroup impliquée dans le code.
android
fonts
spinner
android-spinner
android-fonts
DixieFlatline
la source
la source
Réponses:
C'est ce qui a fonctionné pour moi ( en utilisant des idées de deux de CommonsWare et de gsanllorente réponses):
Si, comme moi, vous avez initialement rempli le Spinner en utilisant
ArrayAdapter.createFromResource()
et une ressource de tableau (comme dans la documentation Spinner ), vous utiliseriez MySpinnerAdapter comme ceci:la source
assignAdapterWithOptions(Spinner spinner, int textArrayResId)
méthode, en obtenant le contextespinner.getContext()
et en attribuant l'adaptateur au spinner à l'intérieur (les dispositions de spinner sont compatibles avec l'ensemble de mon application)Vous appliqueriez la police via votre propre coutume
SpinnerAdapter
, dansgetView()
etgetDropDownView()
.la source
android.view.ViewGroup
, probablementSi vous implémentez votre adaptateur dans un autre fichier, vous pouvez accéder à la fonction "getAssets ()" à partir du constructeur de l'adaptateur, car vous avez le contexte comme paramètre.
la source
findViewById(R.id.text1)
assez utile, même si cela ne fonctionnait pas pour moi: je n'ai pas trouvé le TextView, bien que l'ID était correct. Quelques autres problèmes dans ce code: 1) instruction de retour manquante dansgetView()
, 2) champ inutilisérecurso
, 3) quelques problèmes de style comme nommer une variablespinner_text
(devrait êtrespinnerText
). Voici ce qui a fonctionné pour moi .Essayez ceci: créez custom_spinner.xml personnalisé
Créer un texte vérifié personnalisé
mettre en œuvre la nouvelle mise en page
la source
C'est la suite de ma réponse précédente: https://stackoverflow.com/a/51100507/787399
Étape 1: déclarez item_spinner.xml
étape 2: déclarez item_spinner_dropdown.xml:
Étape 3: Utilisez le spinner dans la mise en page:
[Remarque: l'identifiant du FontTextView est le même dans les deux mises en page, dans l'élément double et dans l'élément déroulant]
Étape 4: utilisez-le dans l'activité / fragment:
[pour plus d'informations, consultez mon autre article: https://stackoverflow.com/a/51077569/787399 et https://stackoverflow.com/a/22164007/787399 ]
la source
Veuillez suivre la personnalisation de base de FontTextView, FontEditView, FontRadioButton, FontCheckBox et FontButton.
[Pour obtenir la réponse exacte, après avoir lu ce guide, veuillez consulter: https://stackoverflow.com/a/51113022/787399 ]
Utilisez FontTextView personnalisé, dans la disposition d'élément ArrayAdapter, comme ceci:
utilisez le code:
Décrivez le style et les attributs dans les fichiers XML respectifs:
et
définissez d'autres styles:
mentionnez les polices dans votre strings.xml:
et utiliser dans les mises en page en économisant du code et du temps:
Au niveau Android 16 et au-dessus, tout cela est simplifié, car vous pouvez désormais conserver le TTF et d'autres ressources de police dans
/res/font
dossier plutôt que dans des actifs. Cela supprime la plupart des classes, styles et attributs personnalisés, voir:Ressources de polices sous Android
Bon codage avec style !! :-)
la source
Les gars, j'ai trouvé une solution géniale, j'emballe l'adaptateur orignal par un assistant comme
Utilisez cette classe SpinnerViewHelper et bonne programmation avec Android
Une expression Lambda est utilisée.
la source