Tengo un archivo de fuente ttf en mi carpeta de activos. Sé cómo usarlo para vistas de texto con:
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
textview1.setTypeface(externalFont);
He definido la búsqueda de mi texto giratorio en su propio archivo xml (como de costumbre en 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" />
Simplemente no puedo hacer referencia a esta vista de texto desde el código, siempre obtengo excepciones de puntero nulo. Por ejemplo, intenté:
TextView spinner_text=(TextView)findViewById(R.id.text1);
spinner_text.setTypeface(externalFont);
¿Es posible seleccionar mi fuente externa incluso para mi texto giratorio definido en su propio xml?
Gracias.
EDITAR con respuesta:
Esto funciona:
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);
Puede ser necesario agregar
import android.view.ViewGroup;
A su lista de importaciones en la parte superior de su archivo. Por alguna razón, Eclipse no hace esta sugerencia cuando no reconoce la clase ViewGroup involucrada en el código.
android
fonts
spinner
android-spinner
android-fonts
DixieFlatline
fuente
fuente
Respuestas:
Esto es lo que funcionó para mí (usando ideas de las respuestas de CommonsWare y gsanllorente ):
Si usted, como yo, originalmente pobló Spinner usando
ArrayAdapter.createFromResource()
y un recurso de matriz (como en la documentación de Spinner ), entonces usaría MySpinnerAdapter así:fuente
assignAdapterWithOptions(Spinner spinner, int textArrayResId)
método, obteniendo el contextospinner.getContext()
y asignando el adaptador a la ruleta dentro de él (los diseños de ruleta son estándar para toda mi aplicación)Puede aplicar la fuente a través de su propia costumbre
SpinnerAdapter
, engetView()
ygetDropDownView()
.fuente
android.view.ViewGroup
, presumiblementeSi implementa su Adaptador en otro archivo, puede acceder a la función "getAssets ()" desde el constructor del Adaptador, ya que tiene el Contexto como parámetro.
fuente
findViewById(R.id.text1)
no pareció encontrar el TextView, aunque la ID era correcta. Algunos otros problemas en este código: 1) falta la declaración de retornogetView()
, 2) campo no utilizadorecurso
, 3) algunos problemas de estilo como nombrar una variablespinner_text
(debería serspinnerText
). Esto es lo que funcionó para mí .Prueba esto crea custom_spinner.xml personalizado
Crear CheckedtextView personalizado como este
implementar el nuevo diseño
fuente
Esta es la continuación de mi respuesta anterior: https://stackoverflow.com/a/51100507/787399
Paso 1: declare item_spinner.xml
paso 2: declare item_spinner_dropdown.xml:
Paso 3: usa la ruleta en el diseño:
[Nota: la identificación de FontTextView es la misma en los diseños, el elemento giratorio y el elemento desplegable]
Paso 4: utilícelo en la Actividad / Fragmento:
[para obtener más orientación, consulte mi otra publicación: https://stackoverflow.com/a/51077569/787399 y https://stackoverflow.com/a/22164007/787399 ]
fuente
Siga la personalización básica de FontTextView, FontEditView, FontRadioButton, FontCheckBox y FontButton.
[Para obtener la respuesta exacta, después de ver esta guía, consulte: https://stackoverflow.com/a/51113022/787399 ]
Use FontTextView personalizado, en el diseño del elemento ArrayAdapter, como este:
usa el código:
Describe el estilo y los atributos en los xmls respectivos:
y
definir algunos estilos más:
menciona fuentes en tu strings.xml:
y usar en los diseños ahorrando algo de código y tiempo:
En el nivel 16 de Android y superior, todo esto se simplifica, porque ahora puede mantener TTF y otros recursos de fuentes en
/res/font
carpeta, en lugar de en activos. Eso elimina la mayoría de las clases, estilos y atributos personalizados, consulte:Recursos de fuentes en Android
Codificación feliz con estilo !! :-)
fuente
Chicos, encontré una solución increíble, envuelvo el adaptador original por ayudante como
Use esta clase SpinnerViewHelper y feliz progamming con Android
Se utiliza una expresión lambda.
fuente