Question

À l'heure actuelle, je suis en train de développer une application. et je ne sais pas comment changer la police 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);
            }
        }
    };

Je souhaite modifier le texte « Bonjour » avec la police personnalisée J'ai essayé avec TypeFace.

Et puis, je veux définir une variable à l'endroit « TextClicked » .. Je l'ai essayé avec une variable locale .. mais il ne fonctionne pas

toute aide par exemple le code source sera vraiment super pour moi.

Était-ce utile?

La solution

De la documentation officielle:

Créez votre ToastView personnalisée

  

Si un message de texte simple ne suffit pas, vous pouvez créer une mise en page personnalisée pour votre notification de pain grillé. Pour créer une mise en page personnalisée, définir une mise en page View, en XML ou dans votre code d'application, et passez la racine Voir objet à la méthode setView(View).

En suivant le lien à la documentation officielle de Google fournira des exemples.

Autres conseils

La réponse est ici: https://stackoverflow.com/a/13231981

Après refactorisation un peu:

    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();

Cela a fonctionné pour moi comme un charme!

Vous pouvez utiliser un SpannableString pour définir la police:

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();

Une classe personnalisée Span qui a un ensemble de Typeface spécifique:

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);
    }
}

Malheureusement, le code sur la page Java est mis sur écoute. Voici un lien vers une fonction de travail, vous pouvez mettre en œuvre que vous donne le texte (je sais, parce que je l'ai testé), et avec un peu d'ingéniosité, pourrait être élargi pour passer des arguments pour la taille, la couleur, etc ...

Toast fonction Taille de la police

Fonction Kotlin:

fun makeLargeTextToast(text: CharSequence): Toast {
    return Toast.makeText(applicationContext, text, Toast.LENGTH_LONG).also {
        val toastLayout = it.view as LinearLayout
        val toastTV = toastLayout.getChildAt(0) as TextView
        toastTV.textSize = 30f
    }
}

Utilisez comme:

makeLargeTextToast("text message").show()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top