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

Posted

技术标签:

【中文标题】更改切换按钮 Android 的开/关文本【英文标题】:Change the On/Off text of a toggle button Android 【发布时间】:2012-01-30 04:41:18 【问题描述】:

我只是 changed the background of a ToggleButton,现在我希望更改随之而来的 ON/OFF 文本。最简单的方法是什么?

【问题讨论】:

【参考方案1】:

您可以使用以下内容从代码中设置文本:

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

此信息来自here

【讨论】:

但是它在 e.i. 上不起作用。三星和HTC手机 Serafins,这是不对的。它确实适用于三星和 HTC 手机。 以编程方式更新开关文本时,按钮不会使用新文本重新绘制自身。您可以通过调用 setChecked(toggleButton.isChecked) 来强制重绘。听起来很荒谬,但它是强制重绘的一种技巧。见this *** answer。 看来您不再需要 toggleButton.setTextOff(textOff);和 toggleButton.setTextOn(textOn);。每个切换状态的文本将仅通过包含相关的 xml 特征来更改。 是的,它不适用于 android.support.v7.widget.SwitchCompat 在一些我已经检查过的 OEM 上!【参考方案2】:

在您链接到的示例中,他们使用 android:textOnandroid:textOff 将其更改为日/夜

【讨论】:

我实际上链接到了一个我以前从未见过的不同问题。感谢您在我自己的问题中指出答案。【参考方案3】:

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

【讨论】:

【参考方案4】:

在某些情况下,您需要强制刷新视图才能使其正常工作。

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

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

【讨论】:

requestLayout() 不起作用,但 setChecked() 起作用。【参考方案5】:

看来您不再需要 toggleButton.setTextOff(textOff);和 toggleButton.setTextOn(textOn);。每个切换状态的文本将仅通过包含相关的 xml 特征来更改。这将覆盖默认的 ON/OFF 文本。

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

【讨论】:

【参考方案6】:

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

【讨论】:

以上是关于更改切换按钮 Android 的开/关文本的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中显示密码开/关模式的切换按钮

如何在 reactstrap 中更改 customswitch 标签的开/关?

JQuery 测验应用程序 - 使用 <id> 标签来切换变量的开/关

嵌套 ObservedObject 中的更改不会更新 UI

Android:创建一个带有图像且没有文本的切换按钮

Android 按钮文本颜色始终为粉红色