Android EditText中输入值以星号*显示 (密码的实现)
来源:互联网 发布:ios 原生同步网络请求 编辑:程序博客网 时间:2024/06/05 22:36
Android Edittext中有密码的输入框,不过其显示的形式动态的变为圆点,此处我们实现的是输入内容直接显示为星号*。
以下为代码:
WordReplacement.java
package com.chuanchuan.edittextdemo;import android.text.method.ReplacementTransformationMethod;public class WordReplacement extends ReplacementTransformationMethod {String strWord = null;@Overrideprotected char[] getOriginal() {//循环ASCII值 字符串形式累加到Stringfor (char i = 0; i < 256; i++) { strWord += String.valueOf(i);}//strWord转换为字符形式的数组char[] charOriginal = strWord.toCharArray();return charOriginal;}@Overrideprotected char[] getReplacement() {char[] charReplacement = new char[255];//输入的字符在ASCII范围内,将其转换为*for (int i = 0; i < 255; i++) {charReplacement[i] = '*';}return charReplacement;}}
MainActivity.java
package com.chuanchuan.edittextdemo;import android.os.Bundle;import android.text.Editable;import android.text.TextWatcher;import android.view.View;import android.view.View.OnFocusChangeListener;import android.widget.EditText;import android.widget.TextView;import android.app.Activity;public class MainActivity extends Activity {private EditText et1;private EditText et2;private EditText et3;private EditText et4;String strHint;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);et1=(EditText) findViewById(R.id.editText1);et2=(EditText) findViewById(R.id.editText2);et3=(EditText) findViewById(R.id.editText3);et4=(EditText) findViewById(R.id.editText4);strHint=getResources().getString(R.string.app_name);final EditText[] mArray = new EditText[] { et1,et2, et3, et4 };for (int i = 0; i < mArray.length; i++) {final int j = i;//输入字符星号化 mArray[j].setTransformationMethod(new WordReplacement());//EditText 获得焦点时hint消失,失去焦点时hint显示mArray[j].setOnFocusChangeListener(new OnFocusChangeListener() {@Overridepublic void onFocusChange(View v, boolean hasFocus) { if (!hasFocus) { ((TextView) v).setHint(strHint); } else { ((TextView) v).setHint(""); }}});mArray[j].addTextChangedListener(new TextWatcher() {private CharSequence temp;private int sStart;private int sEnd;@Overridepublic void onTextChanged(CharSequence s, int start,int before, int count) {temp = s;}@Overridepublic void beforeTextChanged(CharSequence s, int start,int count, int after) {}@Overridepublic void afterTextChanged(Editable s) {sStart = mArray[j].getSelectionStart();sEnd = mArray[j].getSelectionEnd();//前三个EditText输入满位(此处设置 为3)后,光标自动移到下一个TextViewif (temp.length() == 3 && (j == 0 || j == 1 || j == 2)) {mArray[j + 1].setFocusable(true);mArray[j + 1].setFocusableInTouchMode(true);mArray[j + 1].requestFocus();}//输入超出三位时,删除多出的一位if (temp.length() > 3) {s.delete(sStart - 1, sEnd);int tSelection = sStart;mArray[j].setText(s);mArray[j].setSelection(tSelection);}}});}}}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <EditText android:id="@+id/editText1" android:layout_width="50dp" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:hint="@string/app_name" android:inputType="number" > <requestFocus /> </EditText> <EditText android:id="@+id/editText2" android:layout_width="50dp" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:hint="@string/app_name" android:inputType="number" /> <EditText android:id="@+id/editText3" android:layout_width="50dp" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:hint="@string/app_name" android:inputType="number" /> <EditText android:id="@+id/editText4" android:layout_width="50dp" android:layout_height="wrap_content" android:layout_weight="1" android:ems="10" android:hint="@string/app_name" android:inputType="number" /> </LinearLayout>
- Android EditText中输入值以星号*显示 (密码的实现)
- 输入密码以星号显示
- Linux下实现输入密码以星号显示
- C语言实现 输入密码显示星号******
- shell实现输入密码显示星号
- shell实现输入密码显示星号
- datagridview中输入密码,显示星号*
- 输入密码显示星号
- Android UI设计 文本输入框EditText用法(输入密码 隐藏显示输入的字符串)
- android 实现EditText 密码输入显示大圆点
- 设置EditText中输入的密码显示还是不显示?
- 使用EditText的setTransformationMethod() 实现输入密码的显示,隐藏
- Android打造带删除的EditText并且实现输入框密码显示、隐藏
- android之EditText实现动态显示隐藏密码输入框的内容(实用)
- 以星号显示密码程序!!!!!
- Android 打勾显示输入的密码 --EditText与setTransformationMethod
- Android打勾显示输入的密码 - EditText与setTransformationMethod
- Python实现星号遮掩的密码输入
- Linux Shell基础知识8 用户输入
- could not initialize proxy - no Session 异常情况探究
- C语言学习笔记7
- Oracle分区表的使用
- centos6.4上zookeeper3.4.5安装与基础设置
- Android EditText中输入值以星号*显示 (密码的实现)
- 网络七层协议详解
- 快速选择Excel中数据区域
- 常用的数据结构
- django staticfiles DEBUG设置为True或者False的关键内幕
- hdu 4081 Qin Shi Huang's National Road System
- 可控制遍历深度的文件搜索类
- C++ 11 Lambda表达式
- Qt主题风格设置