Android自定义密码样式 黑点转换成特殊字符

发布时间 - 2026-01-11 02:16:19    点击率:

本文为大家分享了Android自定义密码样式的制作代码,黑点换成¥、%等特殊字符,供大家参考,具体内容如下

复制下面代码即可:

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  >

  <EditText
    android:id="@+id/et"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_marginTop="25dp"
    android:hint="请输入数据"
    />

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:orientation="horizontal">

    <Button
      android:id="@+id/password"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_weight="1"
      android:text="密文"/>

    <Button
      android:id="@+id/show_text"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_marginLeft="20dp"
      android:layout_weight="1"
      android:text="明文"/>
  </LinearLayout>

  <Button
    android:id="@+id/clean"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:text="清除"/>
</LinearLayout>

activity:

package com.chen;


import android.app.Activity;
import android.os.Bundle;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

  Button psd;
  Button show_text;
  EditText et;
  Button clean;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //将输入框中的内容变为密码格式
    psd = (Button) findViewById(R.id.password);
    //将密码变为明文
    show_text = (Button) findViewById(R.id.show_text);
    //清空输入框
    clean = (Button) findViewById(R.id.clean);
    et = (EditText) findViewById(R.id.et);
    show_text.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        //获取编辑框中的数据内容
        String context = et.getText().toString();
        //将密码变为明文,这里不用setInputType
        et.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
        //设置光标位置在数据最后
        et.setSelection(context.length());
      }
    });
    psd.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        //获取编辑框中的数据内容
        String context = et.getText().toString();
        //将数据变为指定样式的密码
        et.setTransformationMethod(new AsteriskPasswordTransformationMethod());
        //设置光标位置在数据最后
        et.setSelection(context.length());
      }
    });
    clean.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        et.setText("");
      }
    });

  }

  private class AsteriskPasswordTransformationMethod extends PasswordTransformationMethod {
    @Override
    public CharSequence getTransformation(CharSequence source, View view) {
      return new PasswordCharSequence(source);
    }

    private class PasswordCharSequence implements CharSequence {
      private CharSequence mSource;

      public PasswordCharSequence(CharSequence source) {
        mSource = source; // Store char sequence
      }

      public char charAt(int index) {
        /*
        当在编辑框中输入1的时候,会连续打印0...
        当在编辑框中继续输入2的时候,会连续01...
        不影响功能使用,但是出现原因不知,待解决
         */
        System.out.println("-----" + index + "-----");
        //这里返回的char,就是密码的样式,注意,是char类型的
        return '$'; // This is the important part
      }

      public int length() {
        return mSource.length(); // Return default
      }

      public CharSequence subSequence(int start, int end) {
        return mSource.subSequence(start, end); // Return default
      }
    }
  }

}


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # 密码样式  # Android 实现密码输入框动态明文/密文切换显示效果  # Android中EditText显示明文与密码的两种方式  # Android程序开发之防止密码输入错误 密码明文显示功能  # 框中  # 请输入  # 自定义  # 大家分享  # 具体内容  # 大家多多  # 清空  # 输入框  # 特殊字符  # 框中输入  # default  # horizontal  # layout_weight  # password  # Button  # hint  # dp  # layout_marginTop  # id  # text 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  高防服务器:AI智能防御DDoS攻击与数据安全保障  html如何与html链接_实现多个HTML页面互相链接【互相】  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  新三国志曹操传主线渭水交兵攻略  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  JavaScript如何实现倒计时_时间函数如何精确控制  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何用虚拟主机快速搭建网站?详细步骤解析  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Laravel怎么使用artisan命令缓存配置和视图  如何快速搭建自助建站会员专属系统?  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  如何构建满足综合性能需求的优质建站方案?  历史网站制作软件,华为如何找回被删除的网站?  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  Laravel Session怎么存储_Laravel Session驱动配置详解  如何用西部建站助手快速创建专业网站?  详解Huffman编码算法之Java实现  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  香港服务器WordPress建站指南:SEO优化与高效部署策略  如何在万网利用已有域名快速建站?  如何快速辨别茅台真假?关键步骤解析  简单实现Android文件上传  Laravel定时任务怎么设置_Laravel Crontab调度器配置  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何基于云服务器快速搭建个人网站?  网站图片在线制作软件,怎么在图片上做链接?  原生JS实现图片轮播切换效果  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Windows Hello人脸识别突然无法使用  ,在苏州找工作,上哪个网站比较好?  香港服务器租用费用高吗?如何避免常见误区?  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  网易LOFTER官网链接 老福特网页版登录地址  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  如何在 React 中条件性地遍历数组并渲染元素  企业网站制作这些问题要关注  微信h5制作网站有哪些,免费微信H5页面制作工具?