Подтвердить что ты не робот

Android-виджет: как изменить текст кнопки

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

4b9b3361

Ответ 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");