我正在学习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);
}
}
});
我没有看到问题。你能告诉我我做错了什么并解释一下吗? 当我打开应用程序时......我输入了一些东西并且它被密码传递了。我按下按钮取消选中它,密码文本变成文本。我再次按下按钮,而不是再次传递密码,文本保持正常。
答案 0 :(得分:1)
试试这个:
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
,这样,不会对文本进行任何转换。
希望这会对你有所帮助。
答案 1 :(得分: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