利用EditText作为密码输入框是个不错的选择(只需设置输入类型为textPassword即可),保密且无需担心被盗取。但有时用户也不知道自己输入的是否正确,这时就应该提供一个“显示密码”的复选框,让用户控制密码框的显示方式,看到自己输入的密码,然后必要时再关闭此功能。
本程序就使用了一个CheckBox组件,让用户选择是否显示明文密码,程序效果如下图所示:
Activity程序如下所示:
public class MainActivity extends Activity
{
private EditText password=null;
private CheckBox check=null;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_main);
this.password=(EditText)super.findViewById(R.id.password);
this.check=(CheckBox)super.findViewById(R.id.check);
//为check设置监听选项,控制密码框的显示方式
this.check.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
if(check.isChecked())
{
//设置密码可见
password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}
else
{
//设置密码隐藏
password.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}
});
}
}
布局文件如下所示:
<LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<EditText
android:id="@+id/password"
android:inputType="textPassword"
android:layout_width="match_parent"
android:layout_height="40sp"
android:hint="请输入密码:" />
<CheckBox
android:id="@+id/check"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="显示密码" />
</LinearLayout>