Android toggleButton.setOnText 和 .invalidate 不刷新文本
Android toggleButton.setOnText and .invalidate doesn't refresh text
我有这样的方法:
ToggleButton toggle = ((ToggleButton)findViewById(R.id.toggle));
toggle.setTextOn("blah");
toggle.setTextOff("blahblah");
toggle.invalidate(); // doesn't work?
此方法是从 onOptionsItemSelected
调用的。切换按钮位于 LinearLayout
内,而 LinearLayout
位于另一个 LinearLayout
.
内
我希望在调用该方法后立即更新文本。相反,只有在我手动按下切换状态后,切换按钮上的文本才会更新。我在这里错过了什么,我使用了错误的方法吗?为什么 .invalidate
不起作用?
您可以像这样更新按钮而不是使其失效:
toggle.setChecked(toggle.isChecked());
更新:
setTextOff
和 setTextOn
不更新按钮很奇怪。但是 setText
会那样做。因此,只需为每个按钮状态设置文本并 setText
更新当前值:
// 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);
我有这样的方法:
ToggleButton toggle = ((ToggleButton)findViewById(R.id.toggle));
toggle.setTextOn("blah");
toggle.setTextOff("blahblah");
toggle.invalidate(); // doesn't work?
此方法是从 onOptionsItemSelected
调用的。切换按钮位于 LinearLayout
内,而 LinearLayout
位于另一个 LinearLayout
.
我希望在调用该方法后立即更新文本。相反,只有在我手动按下切换状态后,切换按钮上的文本才会更新。我在这里错过了什么,我使用了错误的方法吗?为什么 .invalidate
不起作用?
您可以像这样更新按钮而不是使其失效:
toggle.setChecked(toggle.isChecked());
更新:
setTextOff
和 setTextOn
不更新按钮很奇怪。但是 setText
会那样做。因此,只需为每个按钮状态设置文本并 setText
更新当前值:
// 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);