Android明密文切换

前言:

在我们的登录界面经常会遇到查看自己输入密码是否正确,就会用到明密文切换

正文:

我们先写出xml文件文件中的代码,不用过多解释

 1 <EditText
 2         android:layout_width="match_parent"
 3         android:layout_height="wrap_content"
 4         android:hint="请输入密码"
 5         android:inputType="textPassword"
 6         android:ems="10"
 7         android:id="@+id/input"/>
 8     <CheckBox
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:text="查看密码"
12         android:id="@+id/checkbox"
13         android:layout_below="@+id/input"
14         android:layout_alignParentRight="true"
15         android:layout_alignParentEnd="true" />

接下来我们先初始化控件,然后对CheckBox设置监听器,使用匿名类,在重写onCheckedChanged方法中,如果点击了CheckBox按钮,则CheckBox对象调用setTransformationMethod方法,方法中的参数用到HideReturnsTransformationMethod

类直接调用静态方法getInstance()

如果要再次转变为密文的形式,和上面不同的是setTransformationMethod方法中参数为PasswordTransformationMethod类,然后该类直接调用静态方法getInstance()

这样虽然能实现明密文切换,但是切成明文后,在输入密码则会在开头输入,所以我们得进行接下来的操作

1 edittext.setSelection(edittext.getText().length());

这样就可以在切换为明文后继续在之前输入的密码后输入密码

完整代码为:

 1 import android.support.v7.app.AppCompatActivity;
 2 import android.os.Bundle;
 3 import android.text.method.HideReturnsTransformationMethod;
 4 import android.text.method.PasswordTransformationMethod;
 5 import android.widget.CheckBox;
 6 import android.widget.CompoundButton;
 7 import android.widget.EditText;
 8 import android.widget.RadioButton;
 9 import android.widget.RadioGroup;
10 import android.widget.Toast;
11 
12 public class MainActivity extends AppCompatActivity {
13     private CheckBox checkbox;
14     private EditText edittext;
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19         checkbox=(CheckBox)findViewById(R.id.checkbox);
20         edittext=(EditText)findViewById(R.id.input);
21         edittext.setCursorVisible(false);23         checkbox.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){
24             @Override
25             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
26 
27                 if(isChecked){
28                     edittext.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
29                     Toast.makeText(MainActivity.this, "您点击了查看密码", Toast.LENGTH_SHORT).show();
30                 }else {
31                     edittext.setTransformationMethod(PasswordTransformationMethod.getInstance());
32                 }
33                 edittext.setSelection(edittext.getText().length());
34             }
35         });
36 
37     }
38 }

第21行代码作用是把光标隐藏

Android明密文切换

上一篇:Spring中WebApplicationInitializer的理解


下一篇:【干货】零基础30分钟让你拥有一个完整属于自己的短视频APP系统