Android toggleButton.setOnText和.invalidate不刷新文本

时间:2015-01-17 12:50:10

标签: android view refresh invalidation android-togglebutton

我有这样的方法:

ToggleButton toggle = ((ToggleButton)findViewById(R.id.toggle));
toggle.setTextOn("blah");
toggle.setTextOff("blahblah");
toggle.invalidate(); // doesn't work?

此方法从onOptionsItemSelected调用。切换按钮位于LinearLayout内,位于另一个LinearLayout内。

我希望在调用方法后立即更新文本。相反,切换后的文本仅在我手动按下以切换状态后才会更新。我在这里错过了什么,我使用了错误的方法吗?为什么.invalidate无效?

1 个答案:

答案 0 :(得分:11)

您可以像这样更新按钮,而不是无效:

toggle.setChecked(toggle.isChecked());

<强>更新

setTextOffsetTextOn不更新按钮很奇怪。但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);