Zmień tekst włączania / wyłączania przycisku przełącznika Android

Odpowiedzi:

202

Możesz użyć następujących, aby ustawić tekst z kodu:

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.

Aby ustawić tekst za pomocą XML, użyj następujących poleceń:

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

Ta informacja pochodzi stąd

rfsk2010
źródło
4
jednak nie działa na telefonach ei samsung i htc
Serafins
2
Serafini, to nie w porządku. Działa na telefonach Samsung i HTC.
przerwać
4
Podczas programowej aktualizacji włączania i wyłączania tekstu przycisk nie przerysowuje się z nowym tekstem. Możesz wymusić przerysowanie, wywołując setChecked (toggleButton.isChecked). Brzmi absurdalnie, ale to hack na wymuszenie przerysowania. Zobacz tę odpowiedź na temat stackoverflow .
MidasLefko
Wygląda na to, że nie potrzebujesz już toggleButton.setTextOff (textOff); i toggleButton.setTextOn (textOn) ;. Tekst dla każdego przełączonego stanu zmieni się, po prostu uwzględniając odpowiednie cechy XML.
Martin Erlic,
1
Tak, nie działa z android.support.v7.widget.SwitchCompatniektórymi producentami OEM. Sprawdziłem to!
sud007
16

W przykładzie, do którego tworzysz łącze, zmieniają go na Dzień / Noc za pomocą android:textOniandroid:textOff

Mark B.
źródło
Właściwie połączyłem się z innym pytaniem, którego nigdy wcześniej nie widziałem. Dziękuję za wskazanie odpowiedzi w moim własnym pytaniu.
styler1972
12

Ustaw XML jako:

<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" />
Thiago
źródło
3

W niektórych przypadkach musisz wymusić odświeżenie widoku, aby działał.

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

toggleButton.setTextOn(textOn);
toggleButton.requestLayout();
Saurabh Padwekar
źródło
requestLayout()nie działa, ale setChecked()działa.
Irfan Latif
2

Wygląda na to, że nie potrzebujesz już toggleButton.setTextOff (textOff); i toggleButton.setTextOn (textOn) ;. Tekst dla każdego przełączonego stanu zmieni się, po prostu uwzględniając odpowiednie cechy XML. Spowoduje to zastąpienie domyślnego tekstu WŁ. / WYŁ.

<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"/>
Martin Erlic
źródło
2

Możesz to zrobić za pomocą 2 opcji:

Opcja 1: ustawiając atrybuty xml

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

Opcja 2: programowo

Ustaw atrybut onClick: methodNameHere (mój to toggleState) Następnie napisz ten kod:

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

PS: to działa dla mnie, mam nadzieję, że działa również dla Ciebie

Feps
źródło