前言:
在我们的登录界面经常会遇到查看自己输入密码是否正确,就会用到明密文切换
正文:
我们先写出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行代码作用是把光标隐藏