【问题标题】:Android toggleButton.setOnText and .invalidate doesn't refresh textAndroid toggleButton.setOnText 和 .invalidate 不刷新文本
【发布时间】:2015-03-15 23:34:45
【问题描述】:

我有这样的方法:

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

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

我希望文本在调用该方法后立即更新。相反,仅在我手动按下切换状态后,切换按钮上的文本才会更新。我在这里缺少什么,我使用了错误的方法吗?为什么.invalidate 不起作用?

【问题讨论】:

    标签: android view refresh invalidation android-togglebutton


    【解决方案1】:

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

    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);
    

    【讨论】:

    • 这行得通,但为什么呢?这真的是最好的方法吗?
    • 这些解决方案感觉很老套,但它们确实有效。谢谢!
    • 帮助,这些都不适合我!文本已设置,但切换未更新!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    • 2020-11-21
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多