Ändern Sie den Ein / Aus-Text einer Umschalttaste für Android


Antworten:


202

Sie können Folgendes verwenden, um den Text aus dem Code festzulegen:

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.

Verwenden Sie Folgendes, um den Text mithilfe von XML festzulegen:

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

Diese Informationen stammen von hier


4
es funktioniert jedoch nicht auf ei samsung und htc handys
Serafins

2
Serafins, das stimmt nicht. Es funktioniert auf Samsung- und HTC-Handys.
unterbrechen

4
Wenn Sie den Ein- und Ausschalttext programmgesteuert aktualisieren, zeichnet sich die Schaltfläche nicht mit dem neuen Text neu. Sie können ein Neuzeichnen erzwingen, indem Sie setChecked (toggleButton.isChecked) aufrufen. Klingt lächerlich, ist aber ein Hack, um das Neuzeichnen zu erzwingen. Siehe diese Antwort zum Stapelüberlauf .
MidasLefko

Es scheint, dass Sie toggleButton.setTextOff (textOff) nicht mehr benötigen. und toggleButton.setTextOn (textOn);. Der Text für jeden umgeschalteten Status ändert sich, indem lediglich die relevanten XML-Merkmale einbezogen werden.
Martin Erlic

1
Ja, bei android.support.v7.widget.SwitchCompateinigen OEMs funktioniert das nicht. Ich habe das überprüft!
Sud007

16

In dem Beispiel, auf das Sie verlinken, ändern sie es mit android:textOnund in Tag / Nachtandroid:textOff


Ich habe tatsächlich eine andere Frage verlinkt, die ich noch nie gesehen hatte. Vielen Dank für den Hinweis auf die Antwort in meiner eigenen Frage.
styler1972

11

Stellen Sie das XML wie folgt ein:

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

2

Es scheint, dass Sie toggleButton.setTextOff (textOff) nicht mehr benötigen. und toggleButton.setTextOn (textOn);. Der Text für jeden umgeschalteten Status ändert sich, indem lediglich die relevanten XML-Merkmale einbezogen werden. Dadurch wird der Standard-EIN / AUS-Text überschrieben.

<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

Sie können dies mit 2 Optionen tun:

Option 1: Durch Festlegen der XML-Attribute

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

Option 2: Programmatisch

Setzen Sie das Attribut onClick: methodNameHere (meins ist toggleState) Dann schreiben Sie diesen Code:

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

PS: Es funktioniert bei mir, hoffe es funktioniert auch bei Ihnen


2

In einigen Fällen müssen Sie die Aktualisierung der Ansicht erzwingen, damit sie funktioniert.

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

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

requestLayout()funktioniert nicht aber setChecked()tut.
Irfan Latif
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.