我们经常会在一些软件上发现在密码输入框的后面有一个按钮可以使我们输入的密码显示为密文(●●●●●或者*****),也可以显示为正常的可见状态,效果如图。
具体实现如下:
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="15dp"
android:orientation="horizontal">
<EditText
android:id="@+id/et_password"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="5"
android:paddingLeft="10dp"
android:digits="0123456789abcdefghigklmnopqrstuvwxyzQWERTYUIOPASDFGHJKLZXCVBNM"
android:gravity="center_vertical"
android:hint="6-16位,数字和密码组合"
android:inputType="textPassword"
android:textColorHint="#999999"
android:textSize="16sp" />
<Button
android:id="@+id/btn_pwd"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:gravity="center"
android:text="明文" />
</LinearLayout>
MainActivity:
package zmit.cn.edittext;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
private static final int PASSWORD_MINGWEN = 0x90;
private static final int PASSWORD_MIWEN = 0x81;
private EditText editText;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.et_password);
button = (Button) findViewById(R.id.btn_pwd);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str = button.getText().toString().trim();
if (str.equals("明文")) {
button.setText("密文");
editText.setInputType(PASSWORD_MINGWEN);//设置显示为明文
editText.setSelection(editText.length());//设置光标显示
} else if (str.equals("密文")) {
button.setText("明文");
editText.setInputType(PASSWORD_MIWEN);//设置显示为密文
editText.setSelection(editText.length());//设置光标显示
}
}
});
}
}