android - duracion - Cambiar fuente de tostada
toast properties android (4)
Actualmente, estoy tratando de desarrollar una aplicación. y no sé cómo cambiar la fuente Toast. .
final OnClickListener clickListener = new OnClickListener() {
public void onClick(View v) {
try {
Toast.makeText(nova.this,"Hello", 500000).show();
}
catch (Exception e) {
Toast.makeText(nova.this,"Exception:" +e, 500000);
}
}
};
Quiero cambiar el texto "Hola" con una fuente personalizada que he probado con TypeFace.
y luego, quiero establecer una variable en el lugar "TextClicked" ... He intentado con una variable local ... pero no funciona
Cualquier ayuda con el código fuente de ejemplo será realmente genial para mí.
De la documentación oficial:
Crea tu ToastView personalizado
Si un simple mensaje de texto no es suficiente, puede crear un diseño personalizado para su notificación de brindis. Para crear un diseño personalizado, defina un diseño de Vista, en XML o en su código de aplicación, y pase el objeto de Vista raíz al método
setView(View)
.
Siguiendo el enlace a la documentación oficial de Google proporcionará ejemplos.
Desafortunadamente el código en la página de Java está fastidiado. Aquí hay un enlace a una función de trabajo que puede implementar que le da el texto (lo sé, porque lo probé), y con un poco de ingenio, podría expandirse para pasar argumentos de tamaño, color, etc.
Función de tamaño de fuente Toast here
La respuesta está aquí: https://.com/a/13231981
Después de refactorizar un poco:
Toast toast = Toast.makeText(context, R.string.yummyToast, Toast.LENGTH_SHORT); LinearLayout toastLayout = (LinearLayout) toast.getView(); TextView toastTV = (TextView) toastLayout.getChildAt(0); toastTV.setTextSize(30); toast.show();
Esto funcionó para mí como un encanto!
Puedes usar una SpannableString para establecer la fuente:
Typeface font = Typeface.createFromAsset(getAssets(), "fonts/ATaha.ttf");
SpannableString efr = new SpannableString("Toast font changed!");
efr.setSpan(new TypefaceSpan(font), 0, efr.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Toast.makeText(this, efr, Toast.LENGTH_SHORT).show();
Una clase Span personalizada que tiene un conjunto de tipos de letra específico:
public class TypefaceSpan extends MetricAffectingSpan {
private Typeface mTypeface;
public TypefaceSpan(Typeface typeface) {
mTypeface = typeface;
}
@Override
public void updateMeasureState(TextPaint p) {
p.setTypeface(mTypeface);
p.setFlags(p.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
}
@Override
public void updateDrawState(TextPaint tp) {
tp.setTypeface(mTypeface);
tp.setFlags(tp.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
}
}