Bir geçiş düğmesinin Açık / Kapalı metnini değiştirin Android


Yanıtlar:


202

Metni koddan ayarlamak için aşağıdakileri kullanabilirsiniz:

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.

Metni xml kullanarak ayarlamak için aşağıdakileri kullanın:

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

Bu bilgi buradan


4
ancak ei samsung ve htc telefonlarda çalışmıyor
Serafins

2
Serafinler, bu doğru değil. Samsung ve HTC telefonlarda çalışır.
kesme

4
Açık ve kapalı metni programlı olarak güncellerken düğme yeni metinle kendini yeniden çizmez. SetChecked (toggleButton.isChecked) 'i çağırarak yeniden çizmeyi zorlayabilirsiniz. Kulağa saçma geliyor ama yeniden çizmeyi zorlamak için bir hack. Bu yığın aşımı cevabına bakın .
MidasLefko

Artık toggleButton.setTextOff (textOff) 'a ihtiyacınız yok gibi görünüyor; ve toggleButton.setTextOn (textOn) ;. Her geçiş durumu için metin, yalnızca ilgili xml özelliklerini içererek değişecektir.
Martin Erlic

1
Evet android.support.v7.widget.SwitchCompat, kontrol ettiğim bazı OEM'lerde çalışmıyor !
sud007

16

Bağlandığınız örnekte, android:textOnve kullanarak bunu Gündüz / Gece olarak değiştiriyorlar.android:textOff


Aslında daha önce hiç görmediğim farklı bir soruyla bağlantı kurdum. Kendi sorumda cevabı işaret ettiğiniz için teşekkür ederim.
styler1972

12

XML'yi şu şekilde ayarlayın:

<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

Bazı durumlarda, çalışmasını sağlamak için görünümü yenilemeye zorlamanız gerekir.

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

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

requestLayout()çalışmıyor ama çalışıyor setChecked().
Irfan Latif

2

Artık toggleButton.setTextOff (textOff) 'a ihtiyacınız yok gibi görünüyor; ve toggleButton.setTextOn (textOn) ;. Her geçiş durumu için metin, yalnızca ilgili xml özelliklerini içererek değişecektir. Bu, varsayılan AÇIK / KAPALI metnini geçersiz kılacaktır.

<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

Bunu 2 seçenekle yapabilirsiniz:

Seçenek 1: xml niteliklerini ayarlayarak

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

2. Seçenek: Programlı olarak

OnClick: methodNameHere özelliğini ayarlayın (benimki toggleState) Sonra şu kodu yazın:

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

Not: benim için çalışıyor, umarım sizin için de çalışır

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.