トグルボタン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
ただし、
eisamsung

2
セラフィン、それは正しくありません。それはサムスンとHTCの電話で動作します。
割り込み

4
プログラムでオンとオフのテキストを更新する場合、ボタンは新しいテキストで再描画されません。setChecked(toggleButton.isChecked)を呼び出すと、強制的に再描画できます。ばかげているように聞こえますが、再描画を強制するためのハックです。このstackoverflowの回答を参照してください。
MidasLefko 2015

もはやtoggleButton.setTextOff(textOff);は必要ないようです。およびtoggleButton.setTextOn(textOn);。切り替えられた各状態のテキストは、関連するxml特性を含めるだけで変更されます。
Martin Erlic 2015

1
はい、android.support.v7.widget.SwitchCompat確認した一部のOEMでは機能しません。
sud007 2016

16

あなたはへのリンクの例では、彼らが使用してデイ/ナイトにそれを変更しているandroid:textOnと、android:textOff


私は実際に、これまでに見たことのない別の質問にリンクしました。私自身の質問で答えを指摘してくれてありがとう。
styler1972 2011

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()動作します。
IrfanLatif20年

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

これは、次の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:それは私のために働きます、それがあなたのためにも働くことを願っています

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.