`
jenly
  • 浏览: 18222 次
文章分类
社区版块
存档分类
最新评论

Android之EditText 为密码输入框时,密码的显示与隐藏

 
阅读更多

实现输入框密码文本的显示与隐藏有两种,一种是通过直接改变android:inputType,一种是通过改变android.text.method.TransformationMethod


方式一:改变android:inputType的值


实现代码如下:

	
	/**
	 * 密码显示或隐藏 (切换)
	 */
	private void showOrHide(EditText etPassword){
		//记住光标开始的位置
		int pos = etPassword.getSelectionStart();
		if(etPassword.getInputType()!= (InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD)){//隐藏密码
			etPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
		}else{//显示密码
			etPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
		}
		etPassword.setSelection(pos);
		
	}
	

参见:android:inputType

对应的值与描述如下:

Constant Value Description
none 0x00000000 There is no content type. The text is not editable.
text 0x00000001 Just plain old text. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_NORMAL.
textCapCharacters 0x00001001 Can be combined withtextand its variations to request capitalization of all characters. Corresponds toTYPE_TEXT_FLAG_CAP_CHARACTERS.
textCapWords 0x00002001 Can be combined withtextand its variations to request capitalization of the first character of every word. Corresponds toTYPE_TEXT_FLAG_CAP_WORDS.
textCapSentences 0x00004001 Can be combined withtextand its variations to request capitalization of the first character of every sentence. Corresponds toTYPE_TEXT_FLAG_CAP_SENTENCES.
textAutoCorrect 0x00008001 Can be combined withtextand its variations to request auto-correction of text being input. Corresponds toTYPE_TEXT_FLAG_AUTO_CORRECT.
textAutoComplete 0x00010001 Can be combined withtextand its variations to specify that this field will be doing its own auto-completion and talking with the input method appropriately. Corresponds toTYPE_TEXT_FLAG_AUTO_COMPLETE.
textMultiLine 0x00020001 Can be combined withtextand its variations to allow multiple lines of text in the field. If this flag is not set, the text field will be constrained to a single line. Corresponds toTYPE_TEXT_FLAG_MULTI_LINE.
textImeMultiLine 0x00040001 Can be combined withtextand its variations to indicate that though the regular text view should not be multiple lines, the IME should provide multiple lines if it can. Corresponds toTYPE_TEXT_FLAG_IME_MULTI_LINE.
textNoSuggestions 0x00080001 Can be combined withtextand its variations to indicate that the IME should not show any dictionary-based word suggestions. Corresponds toTYPE_TEXT_FLAG_NO_SUGGESTIONS.
textUri 0x00000011 Text that will be used as a URI. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_URI.
textEmailAddress 0x00000021 Text that will be used as an e-mail address. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_EMAIL_ADDRESS.
textEmailSubject 0x00000031 Text that is being supplied as the subject of an e-mail. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_EMAIL_SUBJECT.
textShortMessage 0x00000041 Text that is the content of a short message. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_SHORT_MESSAGE.
textLongMessage 0x00000051 Text that is the content of a long message. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_LONG_MESSAGE.
textPersonName 0x00000061 Text that is the name of a person. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_PERSON_NAME.
textPostalAddress 0x00000071 Text that is being supplied as a postal mailing address. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_POSTAL_ADDRESS.
textPassword 0x00000081 Text that is a password. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_PASSWORD.
textVisiblePassword 0x00000091 Text that is a password that should be visible. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_VISIBLE_PASSWORD.
textWebEditText 0x000000a1 Text that is being supplied as text in a web form. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_WEB_EDIT_TEXT.
textFilter 0x000000b1 Text that is filtering some other data. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_FILTER.
textPhonetic 0x000000c1 Text that is for phonetic pronunciation, such as a phonetic name field in a contact entry. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_PHONETIC.
textWebEmailAddress 0x000000d1 Text that will be used as an e-mail address on a web form. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS.
textWebPassword 0x000000e1 Text that will be used as a password on a web form. Corresponds toTYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_WEB_PASSWORD.
number 0x00000002 A numeric only field. Corresponds toTYPE_CLASS_NUMBER|TYPE_NUMBER_VARIATION_NORMAL.
numberSigned 0x00001002 Can be combined withnumberand its other options to allow a signed number. Corresponds toTYPE_CLASS_NUMBER|TYPE_NUMBER_FLAG_SIGNED.
numberDecimal 0x00002002 Can be combined withnumberand its other options to allow a decimal (fractional) number. Corresponds toTYPE_CLASS_NUMBER|TYPE_NUMBER_FLAG_DECIMAL.
numberPassword 0x00000012 A numeric password field. Corresponds toTYPE_CLASS_NUMBER|TYPE_NUMBER_VARIATION_PASSWORD.
phone 0x00000003 For entering a phone number. Corresponds toTYPE_CLASS_PHONE.
datetime 0x00000004 For entering a date and time. Corresponds toTYPE_CLASS_DATETIME|TYPE_DATETIME_VARIATION_NORMAL.
date 0x00000014 For entering a date. Corresponds toTYPE_CLASS_DATETIME|TYPE_DATETIME_VARIATION_DATE.
time 0x00000024 For entering a time. Corresponds toTYPE_CLASS_DATETIME|TYPE_DATETIME_VARIATION_TIME.

This corresponds to the global attribute resource symbolinputType.

方式二:改变android.text.method.TransformationMethod 的值。


实现代码如下:

	
	/**
	 * 显示或隐藏
	 * @param isShow 
	 */
	private void showOrHide(boolean isShow){
		//记住光标开始的位置
		int pos = etPassword.getSelectionStart();
		if(isShow){
			etPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
		}else{
			etPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
			
		}
		etPassword.setSelection(pos);
	}

参见:android.text.method.TransformationMethod

分享到:
评论

相关推荐

    edittext自定义密码输入框

    综上所述,通过创建自定义的Edittext并监听文本变化,我们可以实现一个下划线类型的密码输入框,支持连续输入和删除,同时确保焦点在输入时后移,删除时前移。这种自定义的密码输入框在Android应用程序中非常实用,...

    Android开发 自带清除按钮 密码可见 自定义EditText输入框

    在Android的EditText中,我们可以添加一个图标作为清除按钮,通过监听文本变化事件(TextWatcher)来控制按钮的显示与隐藏。当输入框有内容时,显示清除按钮;当输入为空时,隐藏清除按钮。这个功能的实现需要在XML...

    android带显示/隐藏密码/删除功能的EditText

    反之,当密码隐藏时,显示为星号或圆点,保护用户隐私。实现这一功能的关键在于监听用户的点击事件,并动态改变EditText的inputType属性,从而控制密码的可见性。 其次,集成的删除功能意味着用户可以方便地清除...

    Android文本输入框(EditText)输入密码时显示与隐藏

    本文将详细讲解如何实现`EditText`输入密码时的显示与隐藏功能。 首先,我们需要了解两个关键的`TransformationMethod`类:`PasswordTransformationMethod`和`HideReturnsTransformationMethod`。`...

    Android 登录输入框,带删除,隐藏密码按钮

    在Android开发中,创建一个具有特定功能的登录输入框是常见的需求,比如带有删除按钮以及显示/隐藏密码的选项。这个自定义控件——MyLoginEditText,旨在提供更友好的用户体验,让用户能够方便地清除输入内容,同时...

    android 实现点击edittext的“小眼睛”切换明密文

    在`onCreate`方法中,我们获取到EditText和ImageView的引用,并设置初始状态,即密码是隐藏的,"小眼睛"图标显示为关闭状态。`toggleVisibility`方法则负责根据当前状态切换EditText的显示方式,同时更新“小眼睛”...

    android方块密码输入框 自定义EditText

    它旨在模仿支付宝密码输入框的效果,提供了方形和圆形两种不同的显示模式,使得用户在输入密码时能感受到更加专业且安全的交互体验。 首先,我们来详细了解`EditText`。`EditText`是Android系统提供的一个文本输入...

    Android EditText 正则表达式 限制数字、字母、字符 输入 密码框

    在`EditText`中限制数字、字母和字符的输入,主要是为了创建一个安全的密码输入框,防止用户输入不符合规则的字符。以下是一些相关的知识点: 1. **正则表达式基础**: - **字符集**:`[abc]`表示匹配a、b或c中的...

    Android-PowerfulEditText自带一键清除按钮密码显示与隐藏按钮也可自定义资源

    本主题聚焦于一个增强版的EditText组件——PowerfulEditText,它提供了更多便利的功能,如内置的一键清除按钮、密码显示与隐藏切换,以及自定义资源的能力。这些特性使得开发者能够更方便地定制输入框,提升应用的...

    EditText输入密码 显示 不显示

    当涉及到敏感信息,如密码,通常我们会希望用户输入时显示为星号或圆点,以保护隐私。本教程将深入讲解如何在Android的`EditText`中实现密码显示与隐藏的功能。 首先,`EditText` 的`inputType`属性是控制输入类型...

    Android实现动态显示或隐藏密码输入框的内容

    总之,通过切换`EditText`的`TransformationMethod`,我们可以轻松实现在Android中动态显示或隐藏密码输入框的内容。这样的功能不仅提升了用户体验,也符合了数据隐私的要求。同时,要关注与之相关的其他问题,如软...

    自定义仿支付宝密码输入框(一字一框)

    在Android应用开发中,创建一个自定义的仿支付宝密码输入框是提高用户体验的重要步骤。这个自定义组件通常被称为“一字一框”的密码输入框,它允许用户每输入一个字符,都会在界面上显示一个单独的框,从而提供更好...

    安卓EditText输入框相关-仿微信密码输入可输入明文.rar

    布局文件中,EditText与“显示/隐藏”按钮通常会一起放在一个LinearLayout或ConstraintLayout中,通过约束和布局参数调整它们的位置和对齐方式。 8. **测试和调试**: 如描述中提到,由于不同设备和系统版本可能...

    Android Edittext文本输入框输入文本时,弹出一个删除图标,清空内容.rar

    2. `android:hint`:设置提示信息,在无文本时显示。 3. `android:inputType`:定义输入类型,如文本、数字、密码等。 4. `android:imeOptions`:设置虚拟键盘的行为。 5. `android:digits`:限制可以输入的字符集。...

    自定义EditText实现登录用户名和密码输入

    本文将详细介绍如何通过自定义EditText控件实现一个功能完善的登录用户名和密码输入框,包括输入时显示删除按钮以及密码的星号加密显示。我们将讨论以下几个关键知识点: 1. **自定义EditText** 自定义View是...

    JS实现表单中点击小眼睛显示隐藏密码框中的密码

    在网页表单设计中,为增强用户体验,有时会提供一种功能,允许用户通过点击一个小眼睛图标来切换显示或隐藏输入的密码。这篇文章将详细介绍如何使用JavaScript实现这一功能。该功能通常用于登录或其他涉及输入密码的...

    仿支付宝,微信支付Edittext控件

    "仿支付宝,微信支付Edittext控件"这个主题,就是关于如何在Android应用中创建与支付宝、微信支付类似的输入框组件,以提供用户友好的体验,尤其是用于支付密码或验证码的输入。 编辑框(EditText)是Android开发中...

    android自定义数字键盘和密码输入框

    密码输入框则是在用户输入时显示星号或圆点,保护用户的隐私信息,通常用于银行卡号、密码等敏感数据的输入。 1. **自定义View**: 自定义数字键盘通常需要创建一个新的View类,继承自`View`或者`LinearLayout`等...

    可以显示gif图片的Edittext

    在Android开发中,有时为了提供更丰富的用户体验,我们可能需要在EditText控件中展示动态的GIF图片,例如,将GIF图片作为密码输入框的占位符。这个"可以显示gif图片的Edittext" demo就是针对这种情况设计的,它实现...

    android 密码加密输入,仿微信、支付宝密码输入框,附源码及apk

    在Android开发中,为了保障用户的安全性和隐私,密码输入框的设计和实现是非常关键的一环。本文将详细探讨如何在Android应用中实现一个安全且用户体验良好的密码输入框,类似微信和支付宝的设计,同时提供源码和APK...

Global site tag (gtag.js) - Google Analytics