2015-01-17 19 views
5

yenilemez. Açma/kapama düğmesi LinearLayout'un içinde, başka bir LinearLayout'un içindedir.Android toggleButton.setOnText ve .invalidate böyle bir yöntemi var metni

Metnin, yöntem çağrılır çağrılmaz güncellenmesi bekleniyor. Bunun yerine, geçişteki metin yalnızca durumları değiştirmek için manuel olarak bastıktan sonra güncellenir. Burada neyi özlüyorum, yanlış yöntemi mi kullanıyorum? Neden .invalidate çalışmıyor? Bunun yerine geçersiz bir

cevap

10

, böyle düğmeye güncelleyebilirsiniz:

toggle.setChecked(toggle.isChecked()); 

Güncelleme:

O setTextOff ve setTextOn düğmesini güncellemek kalmamasıdır garip. Ancak setText bunu yapar. Bu nedenle, her bir düğme durumu için metni ve setText güncel değerini güncellemek için metni ayarlayın:

// Text based on state 
ToggleButton toggle = ((ToggleButton)findViewById(R.id.toggle)); 
toggle.setTextOn("blah"); 
toggle.setTextOff("blahblah"); 

CharSequence text = toggle.isChecked() ? toggle.getTextOn() : toggle.getTextOff(); 
toggle.setText(text); 
+0

Bu, ancak neden çalışır? Ve bu gerçekten bunu yapmanın en iyi yolu mu? – ZirconCode

+1

@ZirconCode başka bir çözümle güncellendi. – Simas

+3

çözümler çok zor ama işe yarıyor. Teşekkürler! – ZirconCode

İlgili konular