安卓切换按钮

3

我希望我的切换按钮的“开启”文本变大,而“关闭”文本变小。但是我做不到...有什么建议吗?这是我尝试过的:

mf=(ToggleButton)findViewById(R.id.mf);

        if(mf.isEnabled()==true)
        {
            mf.setTextSize(13);
        }
        else
            mf.setTextSize(8);

我认为代码没问题。你在哪里改变大小?在主活动中还是在其他线程/类中? - Aracem
1
你可以使用 if (mf.isEnabled()) 代替 if(mf.isEnabled()==true) - Ricky
没错,问题就出在那个调用上。正确的方法是 mf.isChecked()。 - Aracem
@muffinbubble 不是的.. 没有任何区别.. 结果一样! - ross
@aracem:不行,我已经试过了! - ross
显示剩余3条评论
3个回答

15

您的代码必须在每次点击按钮时调用。因此,请使用:

toggleButton.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        if (toggleButton.isChecked()) {
            toggleButton.setTextSize(13.0f);
        } else {
            toggleButton.setTextSize(8.0f);
        }
    }
});

你可以使用简单的方法设置OnClickListner。在你的.xml文件中添加以下选项:

android:onClick="nameOfMethod" 

然后在你的代码中:

public void nameOfMethod(View v){

}
在这种情况下,v 是 togglebutton(切换按钮)( ToggleButton mf = (ToggleButton)v; )。

或者如果您已经有一个在单击按钮时调用的函数,请将代码放在此函数内 :) - Zoleas
我假设@ross把代码放在onclick里面了,但仍然赞赏。 - Aracem
我也曾经做出了同样的假设,但我猜我们不应该这么做! - Ricky
是的,我试过了,在我的手机上可以运行,所以我想他可能没有把它放在onClick里面。 - Zoleas
不错的补充,Aracem,+1 Zoleas。 - Ricky

4
我把解决方案放在这里:
 mf=(ToggleButton)findViewById(R.id.mf);

    if(mf.isChecked())
    {
        mf.setTextSize(13);
    }
    else
        mf.setTextSize(8);

请使用isChecked()代替isEnabled()

需要更多信息。如果出现错误,请记录日志...检查R.id.mf是否正确。 - Aracem

3
你需要进行一些调试。
首先:
if(mf.isEnabled()==true) 

可以

if (mf.isEnabled()) 

mf.setTextSize(13)单独使用是否能按预期工作?

添加一些日志记录:

    if (mf.isEnabled())
    {
        // Add some logging, is this line reached correctly?
        mf.setTextSize(13);
    }
    else
        // Add some logging, is this line reached correctly?
        mf.setTextSize(8);

你很可能需要将isEnabled()更改为isChecked()isEnabled()的意思是是否启用,而你想知道的是按钮是否被选中。


是的,mf.setTextSize(13)有效。但isEnabled和isChecked都不起作用。isEnabled始终为true...所以它将字体大小设置为13px。 - ross
Zoleas的回答可能是正确的,你需要设置toggleButton.setOnClickListener - Ricky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接