更改Android切换按钮的开/关文本


Answers:


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三星和htc手机上
不起作用

2
Serafins,那是不对的。它确实适用于三星和HTC手机。
中断

4
以编程方式更新打开和关闭文本时,按钮不会使用新文本重新绘制自身。您可以通过调用setChecked(toggleButton.isChecked)来强制重绘。听起来很荒谬,但是它是强迫重绘的一种手段。请参阅此stackoverflow答案
MidasLefko 2015年

看来您不再需要toggleButton.setTextOff(textOff); 和toggleButton.setTextOn(textOn);。通过仅包括相关的xml特性,每个切换状态的文本都会发生变化。
马丁·埃里克

1
是的,它不适android.support.v7.widget.SwitchCompat用于我检查过的某些OEM!
sud007 '16

16

在您链接到的示例中,他们通过使用android:textOn和将其更改为Day / Night。android:textOff


实际上,我链接到一个从未见过的不同问题。感谢您指出我自己的问题的答案。
styler1972'December

11

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

2

看来您不再需要toggleButton.setTextOff(textOff); 和toggleButton.setTextOn(textOn);。通过仅包括相关的xml特性,每个切换状态的文本都会发生变化。这将覆盖默认的ON / OFF文本。

<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

您可以通过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:对我有用,希望对您也有用


2

在某些情况下,您需要强制刷新视图以使其起作用。

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

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

requestLayout()不起作用,但是setChecked()可以。
Irfan Latif
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.