【问题标题】:Change EditText value from text to password and vice versa on ToggleButton checked在选中的 ToggleButton 上将 EditText 值从文本更改为密码,反之亦然
【发布时间】:2014-06-19 03:36:33
【问题描述】:

我正在学习 Android 编程,但遇到了一个问题。我有这个切换按钮,当我输入文本并且按钮打开时,文本会被加星标(密码,随便你叫什么),当按钮关闭时,文本就是文本。但是,我遇到了一个问题,我没有看到问题。 代码块如下所示:

toggleCommand.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if(toggleCommand.isChecked()){
                    input.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
                } else{
                    input.setInputType(InputType.TYPE_CLASS_TEXT);
                }
            }
        });

我没有看到问题。你能告诉我我做错了什么并解释吗? 当我打开应用程序时..我输入了一些东西并输入了密码。我按下按钮取消选中它,密码文本变成文本。我再次按下按钮,而不是再次输入密码,文本保持正常。

【问题讨论】:

标签: android android-togglebutton


【解决方案1】:

这是工作代码:

toggleCommand.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View arg0)
        {
            if (toggleCommand.isChecked())
            {
                input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
            }
            else
            {
                input.setInputType(InputType.TYPE_CLASS_TEXT);
            }
        }
    });

更多信息:http://thenewboston.org/watch.php?cat=6&number=27

Programmatically change input type of the EditText from PASSWORD to NORMAL & vice versa

编辑:这里对 setInputType 的进一步解释:http://developer.android.com/reference/android/text/InputType.html

【讨论】:

  • 这行得通,但我不明白代码背后的逻辑。你能解释一下吗?
【解决方案2】:

试试这个:

toggleCommand = (ToggleButton)findViewById(R.id.the_id_of_your_togglebutton) ;
toggleCommand.setOnCheckedChangeListener( new OnCheckedChangeListener() 
{
    @Override
    public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) 
    {
        if(isChecked)
        {
            input.setTransformationMethod(PasswordTransformationMethod.getInstance());
        } 
        else
        {
            input.setTransformationMethod(null);
        }
    }
});

您可以在documentation 上阅读更多相关信息。


更新

要进行这种操作,您可以使用TransformationMethod

因此,要将文本设置为隐藏密码,您必须使用PasswordTransformationMethod,并将其再次转换为文本,您只需将TransformationMethod设置为null,这样就不会应用任何转换文本。

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 2020-07-08
    相关资源
    最近更新 更多