Змініть текст увімкнення / вимкнення кнопки перемикання Android


Відповіді:


202

Для встановлення тексту з коду можна використовувати наступне:

toggleButton.setText(textOff);
// Sets the text for when the button is first created.

toggleButton.setTextOff(textOff);
// Sets the text for when the button is not in the checked state.

toggleButton.setTextOn(textOn);
// Sets the text for when the button is in the checked state.

Щоб встановити текст за допомогою xml, використовуйте наступне:

android:textOff="The text for the button when it is not checked."
android:textOn="The text for the button when it is checked." 

Ця інформація звідси


4
однак це не працює на телефонах ei samsung та htc
Serafins

2
Серафіни, це не правильно. Це працює на телефонах Samsung і HTC.
переривання

4
При програмному оновленні ввімкненого та вимкненого тексту кнопка не перемальовує новий текст. Ви можете примусити перемальовування, викликавши setChecked (toggleButton.isChecked). Звучить смішно, але це хак для примусового перемальовування. Дивіться цю відповідь stackoverflow .
MidasLefko

Здається, вам більше не потрібен toggleButton.setTextOff (textOff); і toggleButton.setTextOn (textOn) ;. Текст для кожного переключеного стану буде змінюватися, просто включаючи відповідні характеристики xml.
Мартін Ерліч

1
Так, це не працює з android.support.v7.widget.SwitchCompatдеякими виробниками, я перевірив це!
sud007

16

У прикладі, на який ви посилаєтесь, вони змінюють його на День / Ніч, використовуючи android:textOnтаandroid:textOff


Я насправді пов’язав інше питання, якого я ніколи раніше не бачив. Дякую, що вказали відповідь у своєму власному запитанні.
styler1972

12

Встановіть XML як:

<ToggleButton
    android:id="@+id/flashlightButton"
    style="@style/Button"
    android:layout_above="@+id/buttonStrobeLight"
    android:layout_marginBottom="20dp"
    android:onClick="onToggleClicked"
    android:text="ToggleButton"
    android:textOn="Light ON"
    android:textOff="Light OFF" />

3

У деяких випадках потрібно змусити оновити подання, щоб змусити його працювати.

toggleButton.setTextOff(textOff);
toggleButton.requestLayout();

toggleButton.setTextOn(textOn);
toggleButton.requestLayout();

requestLayout()не працює, але setChecked()працює.
Ірфан Латіф

2

Здається, вам більше не потрібен toggleButton.setTextOff (textOff); і toggleButton.setTextOn (textOn) ;. Текст для кожного переключеного стану буде змінюватися, просто включаючи відповідні характеристики xml. Це замінить текст увімкнення / вимкнення за замовчуванням.

<ToggleButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/toggleText"
    android:textOff="ADD TEXT"
    android:textOn="CLOSE TEXT"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:visibility="gone"/>


2

Ви можете зробити це двома способами:

Варіант 1: встановивши його атрибути xml

 `android:textOff="TEXT OFF"
  android:textOn="TEXT ON"`

Варіант 2: Програмно

Встановіть атрибут onClick: methodNameHere (мій - toggleState) Потім напишіть цей код:

public void toggleState(View view) {
   boolean toggle = ((ToogleButton)view).isChecked();
   if (toggle){
       ((ToogleButton)view).setTextOn("TEXT ON");
   } else {
      ((ToogleButton)view).setTextOff("TEXT OFF");
   }
}

PS: це працює для мене, сподіваюся, це працює і для вас

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.