web-dev-qa-db-fra.com

Widget Android: Comment changer le texte d'un bouton

Comment puis-je modifier le texte d'un widget de bouton Android dans le code et non dans le fichier XML?

31
Skatephone

J'ai pu changer le texte du bouton comme ceci:

import Android.widget.RemoteViews;

//grab the layout, then set the text of the Button called R.id.Counter:
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.my_layout);
remoteViews.setTextViewText(R.id.Counter, "Set button text here");
18
Skatephone

Vous pouvez utiliser la méthode setText(). Exemple:

import Android.widget.Button;

Button p1_button = (Button)findViewById(R.id.Player1);
p1_button.setText("Some text");

Aussi, juste comme point de référence, Bouton étend TextView , par conséquent, vous pouvez utiliser setText() comme avec un TextView ordinaire.

43
eldarerathis

C'est très facile 

Button btn = (Button) findViewById(R.id.btn);
btn.setText("MyText");
1
Jai

J'avais un bouton dans mon layout.xml qui était défini comme une vue comme dans:

final View myButton = findViewById(R.id.button1);

Je n’ai pas pu changer le texte avant de le définir comme un bouton:

final View vButton = findViewById(R.id.button1);
final Button bButton = (Button) findViewById(R.id.button1);

Quand j'ai eu besoin de changer le texte, j'ai utilisé la bButton.setText("Some Text"); et quand j'ai voulu changer la vue, j'ai utilisé le vButton.

A bien fonctionné!

1
bob

Cela peut être hors sujet, mais pour ceux qui ont du mal à changer exactement la police du texte du bouton (c'était mon cas et la réponse de Skatephone m'a aidé), voici comment je l'ai fait (si vous avez créé des boutons en mode création):

Nous devons d’abord avoir le nom de chaîne du bouton «converti» (c’est un moyen détestable d’expliquer, mais tout de suite) en Java à partir du xml, et nous collons donc le code susmentionné dans notre MainActivity.Java 

IMPORTANT! place le code sous la méthode OnCreate!

import Android.widget.RemoteViews;

RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.my_layout);
remoteViews.setTextViewText(R.id.Counter, "Set button text here");

Garder en tete:

my_layout doit être remplacé par le fichier XML où se trouvent vos boutons

Counter doit être remplacé par l'id name de votre bouton ("@+id/ButtonName")

si vous voulez changer le texte du bouton, insérez simplement le texte à la place de "Set button text here"

voici la partie où vous modifiez la police:

Maintenant que vous avez "converti" du xml en Java, vous pouvez définir une méthode Typeface pour TextView. Collez le code suivant exactement sous le précédent décrit ci-dessus

TextView txt = (TextView) findViewById(R.id.text_your_text_view_id);
        Typeface font = Typeface.createFromAsset(getAssets(), "fonts/MyFontName.ttf");
        txt.setTypeface(font);

où, à la place de text_your_text_view_id, vous mettez le nom de l'identifiant de votre bouton (comme dans le code précédent) et à la place de MyFontName.ttf, vous mettez la police souhaitée

ATTENTION! Cela suppose que vous ayez déjà inséré la police souhaitée dans le fichier actifs/dossier de police. par exemple. assets/fonts/MyFontName.ttf

0
Samuele Bolognini

utilisez l'échange en utilisant Java. setText = "...", pour la classe Java, il existe beaucoup plus de méthodes d'implémentation.

    //button fechar
    btnclose.setEnabled(false);
    btnclose.setText("FECHADO");
    View.OnClickListener close = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (btnclose.isClickable()) {
                btnOpen.setEnabled(true);
                btnOpen.setText("ABRIR");
                btnclose.setEnabled(false);
                btnclose.setText("FECHADO");
            } else {
                btnOpen.setEnabled(false);
                btnOpen.setText("ABERTO");
                btnclose.setEnabled(true);
                btnclose.setText("FECHAR");
            }

            Toast.makeText(getActivity(), "FECHADO", Toast.LENGTH_SHORT).show();
        }
    };

    btnclose.setOnClickListener(close); 
0
Tuerê Pinto