先上效果图

1.首先在layout下新建xml文件 view_pas_edittext

主要控件为EditText和Button,其中Button存放闭眼的图片,其他样式自定(闭眼和眼睛两张图片可在阿里图标下载)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"android:background="@color/white"><EditTextandroid:id="@+id/et_view"android:layout_width="0dp"android:layout_height="fill_parent"android:layout_marginLeft="10dp"android:layout_weight="4"android:background="@null"android:gravity="center_vertical"android:singleLine="true"android:textColor="#0e0e0e"android:textColorHint="#b0c6ce"android:textSize="14sp" /><Buttonandroid:id="@id/bt_show"android:layout_width="20dp"android:layout_height="20dp"android:layout_gravity="right|center_vertical"android:layout_margin="10dp"android:padding="5dp"android:background="@drawable/hide_pas" /></LinearLayout></LinearLayout>

2.新建CustomizePasEditText继承LinearLayout,实现View.onClickListener接口

public class CustomizePasEditText extends LinearLayout implements View.OnClickListener {private EditText editText;private Button showButton;//true为隐藏,false为显示private boolean mode = true;//设置提示文字public void setEditTextHint(String hint){if(editText!=null){editText.setHint(hint);}}
//获得输入框文字public String getText(){return editText.getText().toString();}public CustomizePasEditText(Context context, AttributeSet attrs) {super(context, attrs);LayoutInflater.from(context).inflate(R.layout.view_edittext,this,true);editText = findViewById(R.id.et_view);//一开始密码是隐藏的,因此一开始使用闭眼图片,并且将EditText的输入类型设置为密码(不可见)showButton= findViewById(R.id.bt_show);showButton.setBackgroundResource(R.drawable.hide_pas);editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);showButton.setOnClickListener(this);}@Overridepublic void onClick(View v) {//当点击了显示/隐藏按钮,则改变editText的文字显示方式switch (v.getId()){case R.id.bt_show://从隐藏变显示if(mode){editText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);//为了点击之后输入框光标不变editText.setSelection(editText.getText().length());showButton.setBackgroundResource(R.drawable.show_pas);mode = !mode;}else {editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);//为了点击之后输入框光标不变editText.setSelection(editText.getText().length());showButton.setBackgroundResource(R.drawable.hide_pas);mode = !mode;}break;}}//获得输入框内容public EditText getEditText(){return editText;}
}

3.在activity中使用

首先在activity的xml中调用该控件

<com.xx.xx.customUI.CustomizePasEditTextandroid:id="@+id/ed_pas"android:layout_width="match_parent"android:layout_height="@dimen/control_big_margin"android:textColorHint="@color/light_gray"android:hint="@string/ed_hint_pas"android:background="@null"android:padding="10dp"android:textColor="@color/black"android:inputType="textPassword"android:lines="1"android:maxLength="16"/>

然后在代码中使用

//注册绑定
CustomizePasEditText pasEditText; pasEditText = findViewById(R.id.ed_pas);
pasEditText.setEditTextHint(getResources().getString(R.string.ed_hint_pas));//获得输入内容
String pas = pasEditText.getText();

注意,如果要动态改变输入框样式,需在CustomizePasEditText中编写

Android自定义密码输入框(可显示或隐藏)相关推荐

  1. android自定义dialog不显示,Android 自定义的dialog显示不正常呢,怎么回事???

    Android 自定义的dialog显示不正常呢,怎么回事??? 用android的自定义布局文件: android:layout_width="match_parent" and ...

  2. android 自定义控件 焦点,Android 自定义Button按钮显示样式(正常、按下、获取焦点)...

    现在的用户对APP的外观看得很重要,如果APP内所有元件都用Android默认样式写,估计下面评论里就有一堆在骂UI丑的.今天学习自定义Button按钮样式.Button样式修改的是Button的背景 ...

  3. Android 检测键盘是否显示及隐藏键盘

    Android 检测键盘是否显示及隐藏键盘的方法~~ package com.newland.util;import android.app.Activity; import android.view ...

  4. Android软键盘手动显示、隐藏、布局上移和EditText上移

    主要实现:Android软键盘手动显示.隐藏.布局上移和EditText上移 AndroidManifest.xml <?xml version="1.0" encoding ...

  5. Android自定义Textview 蒙语显示(蒙古文字)

    Android自定义Textview 蒙语显示(蒙古文字) 竖排Textview 自动换行 从左到右 蒙语字体包 demo下载地址 https://download.csdn.net/download ...

  6. Android软键盘的显示与隐藏

    本文仅是对原创文章重新进行或多或少的代码测试,权当记录并加深印象 再次感谢开发者社区的分享 一:简述 点击文本框EditText,系统会自动弹出软键盘(其本质是一个Dialog),这必然会引起当前Ac ...

  7. Android 软键盘的显示和隐藏,这样操作就对了

    一.前言 如果有需要用到输入的地方,通常会有需要自动弹出或者收起软键盘的需求.开篇明义,本文会讲讲弹出和收起软键盘的一些细节,最终还会从源码进行分析. 想要操作软键盘,需要使用到 InputMetho ...

  8. android 隐藏键盘时ui延迟恢复,android 软键盘的显示与隐藏问题的研究

    在android中,常常会和输入法的软件键盘交互.在Manifest文件中,系统给activity的一个属性-windowSoftInputMode来控制输入法的显示方式. 该属性提供了Activit ...

  9. android 软键盘的显示和隐藏方法

    方法一:在OnCreate()函数中,加上下面的代码 getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE ...

  10. Android中控件的显示和隐藏以及EditText的可编辑和不可编辑状态

    一.控件的显示和隐藏 在Android中,怎么让控件可见和不可见呢? 其实,不论是显示和隐藏,都有两种方式,一种是在布局文件xml里设置,还有一种就是在我们的java代码中设置. 1. 可见(visi ...

最新文章

  1. ceph-deploy mod add_GTA5 1.50NPC自杀 MOD [支持1.411.50版本] 覆盖版【5.19MB】
  2. 狂神java什么来头_狂神说SpringBoot18:集成SpringSecurity
  3. 联想记忆计算机网络,什么是双向联想记忆神经网络
  4. python读取windows日志_Python解析windows系统日志文件
  5. 图论 —— 网络流 —— 最大流 —— Dinic 算法
  6. SLAM精度测评(绘制比较相机轨迹)- EVO
  7. OSError: [WinError 126] module could not be found(OSError: [WinError 126] 找不到指定的模块)
  8. 基于协同过滤的推荐算法
  9. 4-google translate插件安装及使用
  10. 基于指纹识别技术的身份认证系统的设计与实现
  11. 模板类继承后找不到父类函数的问题
  12. HTML文字阴影火焰,本教程火焰字效果非常逼真
  13. 挑逗新兴科技创业圈兴奋中枢,保险极客“百万医疗”搞事情
  14. 什么是JSON(详解)
  15. 退役帖:再见ACM/ICPC!再见算法竞赛!
  16. 模型的偏差、方差分析
  17. 分类 对应的 全连结层、activation、loss 的选择
  18. 初学者入门web前端:C#基础知识:函数
  19. 正交矩阵和一种简单基础的Gram-Schmidt斯密特正交化方法
  20. Runtime.availableProcessors()

热门文章

  1. 【域泛化】2022 IJCAI领域泛化教程报告
  2. streamsets数据采集平台介绍
  3. eclipse适配高分辨率屏幕(不需要新建manifest)
  4. NC | 中科院深圳先进院马迎飞组揭示人肠道古菌病毒多样性
  5. 建设小程序商城系统方式分享及优缺点分析
  6. CSCI-1200 Data Structures — Fall 2018
  7. Kotlin - 类与构造器
  8. 海最深多少米|海最深是什么地方
  9. AI+遥感智能解译,赋能智慧城市规划革新
  10. 2022-2028全球与中国语音控制智能家居平台市场现状及未来发展趋势