2010-10-03 3 views
28

Как я могу изменить текст виджета кнопки Android в коде, а не в файле XML?Android-виджет: Как изменить текст кнопки

+0

'((android.widget.Button) findViewById (R.id.epic_button)) SetText ("mytitle");.' –

+0

findViewById не работает виджеты! Этот метод не поддерживается в виджетах. – coolcool1994

+1

Это работает. Просто не забудьте добавить 'import android.widget.View;' в верхней части вашего java-файла. Если вы также добавляете 'import android.widget.Button;', его можно сократить до: '((Button) findViewById (R.id.yourButtonName)). SetText (« Новый текст »);' –

ответ

16

Я был в состоянии изменить текст кнопки, как это:

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

Я застрял на том же месте .. Можете ли вы вставить код ??? – Harshad

+0

как получить текст кнопки. –

+0

Спасибо, это спасло меня некоторое время! Вам также нужно добавить \t ns.notify (notificationID, уведомление); – PSIXO

38

Вы можете использовать метод setText(). Пример:

import android.widget.Button; 

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

Кроме того, только в качестве точки отсчета, Button расширяет TextView, следовательно, почему вы можете использовать setText() так же, как с обычным TextView.

+7

Но на виджета findViewById не существует – Skatephone

+1

@Skatephone: тогда вам будет легче помочь, если вы разместите немного кода. При этом класс 'RemoteViews' имеет метод' setTextViewText() '. Я бы предложил взглянуть на это: http://developer.android.com/reference/android/widget/RemoteViews.html#setTextViewText%28int,%20java.lang.CharSequence%29 – eldarerathis

+0

@Skatephone: вы не должны вызовите findViewById на виджет, но на активность или вид. – benvd

0

я была кнопка в моей layout.xml, который был определен как Вид в:

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

Я не был в состоянии изменить текст на нем, пока я не определил его как кнопка:

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

Когда мне нужно изменить текст, я использовал bButton.setText("Some Text");, и когда я хотел изменить вид, я использовал vButton.

Работал отлично!

0

Это может быть не по теме, но для тех, кто борется за то, как точно изменить шрифт текста кнопки (это было моим делом, и ответ Skatephone помог мне) вот как я это сделал (если вы сделали кнопки ind режим проектирования):

Прежде всего нам нужно, чтобы название строки «конвертировано» (это грязный способ объяснить, но прямолинейно) в java из xml, и поэтому мы вставляем вышеупомянутый код в наш MainActivity.java

ВАЖНО! поместите код в соответствии с методом OnCreate!

import android.widget.RemoteViews; 

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

Имейте в виду:

my_layout должен быть заменен на файл XML, где ваши кнопки

Counter должен быть заменен с именем идентификатора вашей кнопки ("@+id/ButtonName")

, если вы хотите изменить текст кнопки просто вставить текст вместо "Set button text here"

здесь приходит та часть, где вы изменить шрифт:

Теперь, когда вы «переделанный» из XML в Java, вы можете установить Typeface метод TextView.Вставьте следующий код в точности под предыдущий раз, описанной выше

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

где вместо text_your_text_view_id вы поставите имя ID вашего баттона (как и в предыдущем коде) и вместо MyFontName.ttf вы положили нужный шрифт

ВНИМАНИЕ! Предполагается, что вы уже поместили свой нужный шрифт в папку активов/шрифтов. например assets/fonts/MyFontName.ttf

0

используйте обмен используя java. setText = "...", для класса java существует много других методов для реализации.

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

Это очень легко

Button btn = (Button) findViewById(R.id.btn); 
btn.setText("MyText"); 
Смежные вопросы