2010-10-03 12 views
28

¿Cómo puedo cambiar el texto de un widget de botón de Android dentro del código y no en el archivo XML?Android widget: Cómo cambiar el texto de un botón

+0

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

+0

findViewById no funciona para widgets! Este método no es compatible con widgets. – coolcool1994

+1

Funciona. Solo asegúrese de agregar 'import android.widget.View;' en la parte superior de su archivo java. Si también agrega 'import android.widget.Button;', se puede acortar a: '((Button) findViewById (R.id.yourButtonName)). SetText (" Nuevo texto ");' –

Respuesta

16

tuve la oportunidad de cambiar el texto del botón de la siguiente manera:

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

Estoy atrapado en el mismo lugar ... ¿se puede pegar el código? – Harshad

+0

cómo obtengo el texto del botón. –

+0

Gracias, esto me ha ahorrado algo de tiempo. También necesita agregar \t ns.notify (notificationID, notificación); – PSIXO

38

Puede utilizar el método setText(). Ejemplo:

import android.widget.Button; 

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

También, así como un punto de referencia, Button extiende TextView, de ahí se puede utilizar setText() al igual que con un TextView ordinario.

+7

Pero en un widget findViewById no existe – Skatephone

+1

@Skatephone: será más fácil ayudarte si publicas un poco de código, entonces. Dicho esto, la clase 'RemoteViews' tiene un método' setTextViewText() '. Sugeriría echarle un vistazo a eso: http://developer.android.com/reference/android/widget/RemoteViews.html#setTextViewText%28int,%20java.lang.CharSequence%29 – eldarerathis

+0

@Skatephone: no debería llama a findViewById en un widget, pero en una actividad o una vista. – benvd

0

que tenía un botón en mi layout.xml que se definió como una vista como en:

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

no estaba capaz de cambiar el texto en él hasta que yo también lo definió como un botón:

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

Cuando necesitaba para cambiar el texto, he utilizado la bButton.setText("Some Text"); y cuando quise alterar la vista, utilicé el vButton.

Funcionó muy bien!

0

Esto puede estar fuera del tema, pero para aquellos que están luchando sobre cómo exactamente cambiar también la fuente del texto del botón (ese era mi caso y la respuesta de Skatephone me ayudó) así es como lo hice (si hiciste botones ind modo de diseño):

Primero debemos tener el nombre de la cadena del botón "convertido" (es una manera sucia de explicar, pero directa) en java desde el xml, así que pegamos el código antes mencionado en nuestra MainActivity.java

¡IMPORTANTE! ¡coloque el código bajo el método OnCreate!

import android.widget.RemoteViews; 

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

Tenga en cuenta:

my_layout tiene que ser sustituido por el archivo XML en sus botones son

Counter tiene que ser sustituido por el nombre de identificación del botón ("@+id/ButtonName")

si quieres cambiar el texto del botón basta con insertar el texto en lugar de "Set button text here"

aquí viene la parte donde se cambia el tipo de letra:

Ahora que "convertido" de XML para Java, se puede establecer un tipo de letra método para TextView.Pegue el siguiente código exactamente debajo de la anterior acaba de describir

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

, donde en lugar de text_your_text_view_id se pone el nombre de identificación de su botón (como que el código anterior) y en lugar de MyFontName.ttf poner su fuente deseada

¡ADVERTENCIA! Esto supone que ya colocaste la fuente deseada en la carpeta assets/font . p.ej. assets/fonts/MyFontName.ttf

0

usa el intercambio usando java. setText = "...", para la clase java hay muchos más métodos para la implementación.

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

Esto es muy fácil

Button btn = (Button) findViewById(R.id.btn); 
btn.setText("MyText"); 
Cuestiones relacionadas