android studio EditText用法

news2024/11/25 6:54:03

1.自定义文本框

选中状态:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <!--指定形状内部颜色-->
    <solid android:color="#ffffff">
    </solid>
    <!--指定形状轮廓的粗细与颜色-->
    <stroke android:width="1dp"
        android:color="#0000ff">
    </stroke>
    <!--指定圆角半径-->
    <corners android:radius="5dp"/>
    <!--指定上下左右间距-->
    <padding android:bottom="2dp"
        android:left="2dp"
        android:right="2dp"
        android:top="2dp">
    </padding>
</shape>

未选中状态:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <!--指定形状内部颜色-->
    <solid android:color="#ffffff">
    </solid>
    <!--指定形状轮廓的粗细与颜色-->
    <stroke android:width="1dp"
        android:color="#aaaaaa">
    </stroke>
    <!--指定圆角半径-->
    <corners android:radius="5dp"/>
    <!--指定上下左右间距-->
    <padding android:bottom="2dp"
        android:left="2dp"
        android:right="2dp"
        android:top="2dp">
    </padding>

</shape>

 

2.定义文本框

<EditText
    android:id="@+id/ed1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/et1"
    android:text="请输入名字">
</EditText>
<EditText
    android:id="@+id/ed2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/edittext_selector"
    android:inputType="textPassword"
    android:maxLength="11"
    android:hint="请输密码">
</EditText>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <TextView
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:gravity="end"
        android:text="用户:">
    </TextView>
    <EditText
        android:id="@+id/ed3"
        android:layout_width="0dp"
        android:layout_weight="3"
        android:layout_height="wrap_content"
        android:hint="请输入手机号码"
        android:inputType="number"
        android:maxLength="11">
    </EditText>
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <TextView
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:gravity="end"
        android:text="密码:">

    </TextView>
    <EditText
        android:id="@+id/ed4"
        android:layout_width="0dp"
        android:layout_weight="3"
        android:layout_height="wrap_content"
        android:hint="请输入验证码"
        android:maxLength="6"
        android:inputType="numberPassword">
    </EditText>
</LinearLayout>

3.焦点监听

editText3 = findViewById(R.id.ed3);
//焦点监听
editText3.setOnFocusChangeListener(this::onFocusChange);private void onFocusChange(View view, boolean b) {

    if(b){
        String  phone =  editText3.getText().toString();
        Log.d("用户账号数据:", "onFocusChange: "+phone);
        //手机号码不足11位
        if(TextUtils.isEmpty(phone)||phone.length()<11){
            //手机号码编辑框请求焦点,把光标移回手机号码编辑框
            editText3.requestFocus();
            Log.d("用户账号数据:", "手机号码不足11位!!! ");
            Toast.makeText(this, "手机号码不足11位", Toast.LENGTH_SHORT).show();
        }
    }

}

4.当输入达到最大值,关闭键盘

editText3 = findViewById(R.id.ed3);
editText4 = findViewById(R.id.ed4);
//文本变化监听
editText3.addTextChangedListener(new HideTextWatcher (editText3,11));
editText4.addTextChangedListener(new HideTextWatcher (editText4,6));
/**
 * 自定义文本变化监听类
 */
private  class  HideTextWatcher implements TextWatcher{

    private  EditText mView;
    private  int mMaxLenth;

    //定义一个构造方法
    public HideTextWatcher(EditText v, int maxLenth) {
        this.mView = v;
        this.mMaxLenth = maxLenth;
    }

    //改变之前
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {


    }
    //改变中
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {


    }
    //改变之后
    @Override
    public void afterTextChanged(Editable s) {

        //获取输入文本
        String str = s.toString();
        //输入文本达到最大数,关闭输入法
        if(str.length()==mMaxLenth){
            ViewUitl.hideOneInputMethod( MainActivity3.this,mView);
        }

    }
}

5.自定义关闭键盘工具类

public class ViewUitl {


    /**
     * 关闭键盘
     * @param act
     * @param v
     */
    public static void hideOneInputMethod(Activity act, View v) {
        //从系统获取输入法
        InputMethodManager imm =(InputMethodManager) act.getSystemService(Context.INPUT_METHOD_SERVICE);
        //关闭键盘
        imm.hideSoftInputFromWindow(v.getWindowToken(),0);

    }


}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/460123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习在生态、环境经济学中的实践技术应用及论文写作

近年来&#xff0c;人工智能领域已经取得突破性进展&#xff0c;对经济社会各个领域都产生了重大影响&#xff0c;结合了统计学、数据科学和计算机科学的机器学习是人工智能的主流方向之一&#xff0c;目前也在飞快的融入计量经济学研究。表面上机器学习通常使用大数据&#xf…

点了下链接信息就泄露了,ta们是怎么做到的?

随着互联网的普及以及一系列可供上网设备的快速发展&#xff0c;截止2022年12月&#xff0c;中国网民规模达10.37亿&#xff0c;较之2021年12月增长3549万&#xff0c;互联网普及率达75.6%&#xff1b;在这么庞大的数据背后又有多少用户的个人信息被泄露呢? 一、信息泄露常见场…

2023 年最全面的 DevOps 工具列表,你用过几个?

在软件开发领域&#xff0c;DevOps已经成为越来越重要的概念。它强调了开发、测试、运维等各个环节之间的协作和自动化&#xff0c;以提高软件交付的速度和质量。随着时间的推移&#xff0c;DevOps所涉及的工具也不断更新和演进。本文将介绍一个预计在 2023 年最全面的 DevOps …

elementui中使用响应式布局实现五个盒子一行的适配

一、使用elementui中的自定义标签 自定义标签之后&#xff0c;浏览器中的css样式会出现这个类名 <el-row :gutter"30" class"row-bg"><el-col:xs"8":sm"6":md"4":lg"{ span: 24-5 }"class"headerC…

开发框架Furion之Winform+SqlSugar

目录 1.开发环境 2.项目搭建 2.1 创建WinFrom主项目 2.2 创建子项目 2.3 实体类库基础类信息配置 2.3.1 Nuget包及项目引用 2.3.2 实体基类创建 2.4 仓储业务类库基础配置 2.4.1 Nuget包及项目引用 2.4.2 Dtos实体 2.4.3 仓储基类 2.5 service注册类库基础配置 2…

【图形数据库】Neo4j简介及应用场景

文章目录 1.什么是Neo4j?2.图形数据结构3.Neo4j应用场景3.1我们可以将图领域划分成以下两部分&#xff1a;3.2目前&#xff0c;业内已经有了相对比较成熟的基于图数据库的解决方案&#xff0c;大致可以分为以下几类。3.2.1金融行业应用3.2.2社交网络图谱3.2.3企业关系图谱 总结…

Linux进程通信:存储映射mmap

1. 存储映射是什么&#xff1f; 如上图&#xff0c;存储映射是将块设备的文件映射到进程的虚拟地址空间。之后&#xff0c;进程可以直接使用指针操作其地址空间中映射的文件&#xff0c;对这块映射区操作就相当于操作文件。 2. 存储映射函数mmap的简单使用 &#xff08;1&…

网络安全岗位面试题大全:解析各个分支岗位的面试题目,帮助你上岸大厂

网络安全是一个广泛的领域&#xff0c;涵盖了许多不同的岗位和分支。我整理了网络安全各个岗位分支的面试题目&#xff1a; 安全工程师/系统管理员 您如何确保网络系统的安全性和保密性&#xff1f;您采用了哪些技术和工具&#xff1f;请描述一下您在过去工作中遇到的最具挑战…

C++ -5- 内存管理

文章目录 C语言和C内存管理的区别示例1. C/C 中程序内存区域划分2. C中动态内存管理3.operator new 与 operator delete 函数4.new 和 delete 的实现原理5.定位new表达式 C语言和C内存管理的区别示例 //C语言&#xff1a; struct SListNode {int data;struct SListNode* next; …

什么是内存?什么是内存逃逸?怎么做内存逃逸分析

内存 平时我们在电脑上听歌&#xff0c;聊天&#xff0c;或者启动某个程序&#xff0c;那么这个启动过程&#xff0c;其实就是把程序从硬盘读入到内存中去。就像安卓手机&#xff0c;内存不够了很卡&#xff0c;杀掉几个软件&#xff0c;内存就升上来了。但也不是所有的程序都…

产品经理需要了解api接口的哪些东西

一、作为产品经理&#xff0c;需要了解API接口的以下方面&#xff1a; 功能&#xff1a;API接口的功能是指它提供的业务功能&#xff0c;包括数据查询、修改、增加、删除、计算等等&#xff0c;根据产品的需求确定需要调用哪些API接口。请求方式和传参&#xff1a;API接口的请…

致力提供一站式数据可视化解决方案,支持报表、图表、大屏

一、开源项目简介 Davinci是一个DVAAS&#xff08;Data Visualization as a Service&#xff09;平台解决方案。 Davinci面向业务人员/数据工程师/数据分析师/数据科学家&#xff0c;致力于提供一站式数据可视化解决方案。既可作为公有云/私有云独立使用&#xff0c;也可作为…

Linux进程通信:信号

1. 信号的概念 Linux进程间通信的方式之一。信号也称为“软件中断”。 信号特点&#xff1a; 简单&#xff1b;携带信息有限&#xff1b;满足特定条件才发送信号&#xff1b;可进行用户空间和内核空间进程的交互&#xff1b; 2. 信号的编号 kill -l // 查看信号编号 POS…

ModelArts的使用

完整流程第一个实例&#xff1a;AI初学者&#xff1a;使用订阅算法构建模型实现花卉识别_AI开发平台ModelArts_最佳实践_模型训练&#xff08;预置算法-新版训练&#xff09;_华为云 一、支持的模型 可以在gitee上下载标准网络模型&#xff1a; models: Models of MindSpore …

Prometheus优化及高可用

Prometheus优化及高可用 概述 Prometheus几乎已成为监控领域的事实标准&#xff0c;它自带高效的时序数据库存储&#xff0c;可以让单台 Prometheus 能够高效的处理大量的数据&#xff0c;还有友好并且强大的 PromQL 语法&#xff0c;可以用来灵活的查询各种监控数据以及配置…

使用 chat_flutter 进行聊天记录展示

前言 最近需要实现一个聊天记录的页面展示&#xff0c;在网上发现没有适合自己的&#xff0c;于是自己就造了一个&#xff0c;总体感觉还不赖。 下面奉上地址、效果图和教程。 效果图 地址 github: https://github.com/xiaorui-23/chat_fluttergitee: https://gitee.com/xi…

搭建微型服务器(node express框架)

目录 一&#xff1a;打包&#xff08;npm run build&#xff09; 二&#xff1a;变成合法的包&#xff08;新建server文件夹&#xff09; 三&#xff1a;一路回车 四&#xff1a;新建服务器主文件 五&#xff1a;编辑server.js 六&#xff1a;node server启动服务器 七&a…

第十二章 享元模式

文章目录 前言一、享元模式基本介绍二、享元模式解决网站展现项目完整代码WebSite 抽象网站类User 外部状态用户内部状态网站 ConcreteWebSite网站工厂产生网站和负责共享&#xff08;池&#xff09; WebSiteFactoryClint 测试 三、享元模式在JDK-Interger的应用源码分析四、享…

NFS部署

共享/webdata/目录&#xff1b; ~ 用于存储 AppSrv 主机的 WEB 数据&#xff1b; ~ 仅允许 AppSrv 主机访问该共享&#xff1b; ~ 考虑安全&#xff0c;不论登入 NFS 的使用者身份为何&#xff0c;都将其设置为匿名用 户访问 StorageSrv和AppSrv nfs共享 1.安装nfs(App…

pdf怎么删除其中一页?

pdf怎么删除其中一页&#xff1f;大家都应该知道&#xff0c;PDF是一种实用性非常强且非常便携文件格式&#xff0c;许多用户对其非常熟悉。不管是工作还是学习中&#xff0c;都会下载或者使用到pdf文件。pdf文件具有非常好的兼容性&#xff0c;F可以将各种图片、文字内容整合在…