2011年5月20日 星期五

利用 CheckBox 控制顯示密碼

最近在弄一個需要登入驗證密碼的服務…
比較特殊的是這次在 App 上不必檢查密碼內是否含有什麼特殊字元…

Client 一律將用戶輸入的密碼當作字串丟給 Server 檢查…
所以不需用 android:numeric="integer" 之類的方式限定用戶輸入特定區域的字符…
可以亂輸入的情況下更覺得讓用戶看到明碼是必要的貼心服務…
以下範例簡單的示範如何在密碼輸入欄底下加入一個 "顯示密碼" 的 CheckBox

request_pwd_layout.xml

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<EditText android:id="@+id/txt_pwd"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:password="true"
android:text=""/>

<CheckBox android:id="@+id/chk_showpwd"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
      android:layout_marginLeft="20dp"
      android:gravity="left"
    android:text="@string/str_show_pwd"/>

</LinearLayout>


RequestPwd.Java

import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.request_pwd_layout);

final CheckBox chkShow = ((CheckBox)findViewById(R.id.chk_showpwd));
chkShow.setOnClickListener(
new View.OnClickListener()
{
public void onClick(View v)
{
TextView txtPwd = (TextView)findViewById(R.id.txt_pwd);
final boolean isChecked = chkShow.isChecked();
if(isChecked)
{
// 顯示明碼
txtPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}
else
{
// 顯示 **
txtPwd.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}
});
}

沒有留言:

張貼留言