Как я могу изменить текст виджета кнопки Android в коде, а не в файле XML?
Android-виджет: как изменить текст кнопки
Ответ 1
Мне удалось изменить текст кнопки следующим образом:
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
Вы можете использовать метод setText()
. Пример:
import android.widget.Button;
Button p1_button = (Button)findViewById(R.id.Player1);
p1_button.setText("Some text");
Также, как точка отсчета, Button extends TextView, поэтому вы можете использовать setText()
так же, как с обычным TextView.
Ответ 3
У меня была кнопка в моем 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.
Отлично работает!
Ответ 4
Это может быть не по теме, но для тех, кто борется за то, как точно изменить шрифт текста кнопки (это был мой случай, и ответ Skatephone помог мне) здесь, как я это сделал (если вы сделали кнопки ind design режим):
Сначала нам нужно, чтобы имя строки кнопки "преобразовано" (это грязный способ объяснить, но прямолинейно) в 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, вы можете установить метод Textface для 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
вы указываете свое имя кнопки (как и предыдущий код), а вместо MyFontName.ttf
вы помещаете нужный шрифт
ВНИМАНИЕ! Это предполагает, что вы уже поместили свой желаемый шрифт в папках с активами/шрифтами. например активы/шрифты/MyFontName.ttf
Ответ 5
используйте обмен с помощью 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);
Ответ 6
Это очень легко
Button btn = (Button) findViewById(R.id.btn);
btn.setText("MyText");