android EditText密码框,怎么让它只显示密码点,不让它显示最后一位输入的字符?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android EditText密码框,怎么让它只显示密码点,不让它显示最后一位输入的字符?相关的知识,希望对你有一定的参考价值。
你们看,他会延时显示最后输入的那一位字符,这会存在安全隐患,怎么才能使它直接显示密码点啊。
在线等。。。求帮助
谢谢各位了,我终于解决了,原来这是在模拟器里面设置的,和程序无关联的。
布局里加上这一句:
android:inputType="textPassword"就好了。
方法1::
在布局文件中设置文本编辑框属性作字符数限制,android:maxLength="10" 即限制最大输入字符个数为10。
方法2:在代码中使用InputFilter 进行过滤
public class MyActivity extends Activity
private EditText text;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (EditText)findViewById(R.id.text);
text .setFilters(new InputFilter[]new InputFilter.LengthFilter(20));
方法3:利用 TextWatcher 进行监听
继承TextWatcher接口,对输入进行监听
pblic class MaxLengthWatcher implements TextWatcher
private int maxLen = 0;
private EditText editText = null;
public MaxLengthWatcher(int maxLen, EditText editText)
this.maxLen = maxLen;
this.editText = editText;
public void onTextChanged(CharSequence s, int start, int before, int count)
// TODO Auto-generated method stub
Editable editable = editText.getText();
int len = editable.length();
if(len > maxLen)
int selEndIndex = Selection.getSelectionEnd(editable);
String str = editable.toString();
//截取新字符串
String newStr = str.substring(0,maxLen);
editText.setText(newStr);
editable = editText.getText();
//新字符串的长度
int newLen = editable.length();
//旧光标位置超过字符串长度
if(selEndIndex > newLen)
selEndIndex = editable.length();
//设置新光标所在的位置
Selection.setSelection(editable, selEndIndex);
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after)
@Override
public void afterTextChanged(Editable s)
在activity中为EditText添加监听
public class MyActivity extends Activity
private EditText text;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (EditText) findViewById(R.id.entry);
//限制为10
text.addTextChangedListener(new MaxLengthWatcher(10, editText));
没用 每次输入一个字符还是会显示一会儿
参考技术C 布局里加上这一句:android:inputType="textPassword"追问
没用 每次输入一个字符还是会显示一会儿
追答正常的不就是这样的么?不然别人怎么知道自己输了啥? 如果你真要一开始就不显示,那就监控edittext内容改变,然后settext成星号吧
参考技术D 哥们,手机毕竟不是电脑,输入密码准确度那么高。其实大多数的手机应用输入密码时都是这个样子的需要延迟一会,让用户确认自己输入是否正确。
推荐你还是别改了,以后用户体验会很差的
android布局_EditText
实现内容:
1.如何使用圆角输入框和按钮背景
2.如何实现“手机号”、“密码”后面的竖线
3.如何监听输入框的输入事件及删除按钮的动态显示隐藏
1.如何使用圆角输入框和按钮背景
安卓为开发者准备了shape这个xml标签,用于自定义一些形状。
那么我就来定义一个白色的输入框背景。代码如下:
<!-- 形状 --> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#ffffff" /> <!-- 边框 --> <stroke android:width="1dip" android:color="#ffffff" /> <!-- 内填充颜色 --> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> <!-- 圆角 --> <corners android:radius="6dp" /> </shape>
将其设置成任何View的background就可以了
android:background="@drawable/shape_wihte_frame"
2.如何实现“手机号”、“密码”后面的竖线
这个其实很简单,只需书写一个竖线即可,宽度为1dp或者1px(或你认为更合适的数值)。
<View android:id="@+id/view1" android:layout_width="1dip" android:layout_height="fill_parent" android:layout_centerVertical="true" android:layout_gravity="center_horizontal" android:layout_marginLeft="2dp" android:layout_marginRight="2dp" android:layout_toRightOf="@+id/textView1" android:background="#EEEFFF" />
3.如何监听输入框的输入事件及删除按钮的动态显示隐藏
思想很简单,就是监听EditText的输入事件,之后如果输入长度大于0就显示后面的删除按钮,如果=0就隐藏删除按键,点击删除按钮就清空输入框。在这里我写出了一个工具类方便大家调用。高内聚低耦合是我们共同的追求。
public class EditTextClearTools { public static void addclerListener(final EditText e1, final ImageView m1) { e1.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub // 监听如果输入串长度大于0那么就显示clear按钮。 String s1 = s + ""; if (s.length() > 0) { m1.setVisibility(View.VISIBLE); } else { m1.setVisibility(View.INVISIBLE); } } }); m1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // 清空输入框 e1.setText(""); } }); } }
主程序代码
public class MainActivity extends Activity { EditText e1, e2; ImageView m1, m2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_user_login); init(); } private void init() { // TODO Auto-generated method stub e1 = (EditText) findViewById(R.id.phonenumber); e2 = (EditText) findViewById(R.id.password); m1 = (ImageView) findViewById(R.id.del_phonenumber); m2 = (ImageView) findViewById(R.id.del_password); // 添加监听器 EditTextClearTools.addclerListener(e1, m1); EditTextClearTools.addclerListener(e2, m2); } }
代码连接http://download.csdn.net/detail/androidmsky/9274037
转载于http://blog.csdn.net/androidmsky/article/details/49870823
以上是关于android EditText密码框,怎么让它只显示密码点,不让它显示最后一位输入的字符?的主要内容,如果未能解决你的问题,请参考以下文章