2010-10-03 24 views
28

Come posso modificare il testo di un widget di pulsante Android all'interno del codice e non il file XML?Widget Android: come modificare il testo di un pulsante

+0

'((android.widget.Button) findViewById (R.id.epic_button)) setText ("myTitle");.' –

+0

findViewById non funziona per widgets! Questo metodo non è supportato nei widget. – coolcool1994

+1

Funziona. Assicurati di aggiungere "import android.widget.View;" nella parte superiore del tuo file java. Se si aggiunge anche 'import android.widget.Button;', può essere abbreviato in: '((Pulsante) findViewById (R.id.yourButtonName)). SetText (" Nuovo testo ");' –

risposta

16

sono stato in grado di cambiare il testo del pulsante in questo modo:

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"); 
+2

Sono bloccato nello stesso posto .. puoi incollare il codice ?? – Harshad

+0

come ottengo il testo del pulsante. –

+0

Grazie, questo mi ha salvato un po 'di tempo! È inoltre necessario aggiungere il \t ns.notify (notificationID, notifica); – PSIXO

38

È possibile utilizzare il metodo setText(). Esempio:

import android.widget.Button; 

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

Inoltre, proprio come un punto di riferimento, Button estende TextView, quindi, perché è possibile utilizzare setText() proprio come con un TextView ordinario.

+7

Ma su un widget findViewById non esiste – Skatephone

+1

@Skatephone: sarà più facile aiutarti se pubblichi un po 'di codice, quindi. Detto questo, la classe 'RemoteViews' ha un metodo' setTextViewText() '. Ti suggerisco di dare un'occhiata a questo: http://developer.android.com/reference/android/widget/RemoteViews.html#setTextViewText%28int,%20java.lang.CharSequence%29 – eldarerathis

+0

@Skatephone: non dovresti chiama findViewById su un widget, ma su un'attività o su una vista. – benvd

0

ho avuto un pulsante nel mio layout.xml che è stato definito come una vista come in:

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

non ero in grado di cambiare il testo su di esso fino a quando ho anche definito come un pulsante:

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

Quando ho avuto bisogno di modificare il testo, ho usato il bButton.setText("Some Text"); e quando ho voluto modificare la vista, ho usato il vButton.

Ha funzionato alla grande!

0

Questo può essere fuori tema, ma per coloro che stanno lottando su come cambiare esattamente anche il carattere del testo del pulsante (che era il mio caso e la risposta di Skatephone mi ha aiutato) ecco come l'ho fatto (se hai fatto bottoni ind modalità di progettazione):

in primo luogo abbiamo bisogno di avere il nome della stringa del pulsante "convertiti" (è un modo fallo da spiegare, ma semplice) in java dal xml, e così abbiamo incollare il codice citato nella nostra MainActivity.java

IMPORTANTE! posiziona il codice sotto il metodo OnCreate!

import android.widget.RemoteViews; 

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

Tenete a mente:

my_layout deve essere sostituito con il file XML in cui i pulsanti sono

Counter deve essere sostituito con il nome id del pulsante ("@+id/ButtonName")

se si desidera modificare il testo del pulsante è sufficiente inserire il testo al posto di "Set button text here"

ecco che arriva la parte in cui si modifica il tipo di carattere:

Ora che "convertiti" da XML a Java, è possibile impostare un carattere tipografico metodo per TextView.Incollare il seguente codice esattamente sotto il precedente appena descritto sopra

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

dove al posto di text_your_text_view_id si mette il nome identificativo del tuo tasto (come il codice precedente) e al posto di MyFontName.ttf si mette il font desiderato

ATTENZIONE! Questo presuppone che tu abbia già inserito il font desiderato nella cartella assets/font. per esempio. assets/fonts/MyFontName.ttf

0

utilizzare lo scambio utilizzando java. setText = "...", per la classe java ci sono molti altri metodi per l'implementazione.

//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

questo è molto facile

Button btn = (Button) findViewById(R.id.btn); 
btn.setText("MyText"); 
Problemi correlati