android EditText监听和长度监测事件
<?xml version="1.0" encoding="utf-8"?> <!-- 定义基础的LinearLayout布局 --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <!-- 定义EditText文本输入框 --> <EditText android:id="@+id/Et" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="请输入用户名:"/> <!-- 定义Button按钮屏幕区域 --> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="myclick" android:text="点击我,检测用户名合法性!"/> <!-- 定义TextView文本标签 --> <TextView android:id="@+id/Tv" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout>
package com.example.yanlei.yl2; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnKeyListener; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.widget.TextView; import android.widget.EditText; import android.view.View; import android.widget.Toast; public class MainActivity extends AppCompatActivity { //定义TextView对象 private TextView Tv; //定义EditText对象 private EditText Et; @Override public void onCreate(Bundle savedInstanceState) { //当创建此Activity的时候回调 super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findView(); Et.addTextChangedListener(new EditChangedListener()); } private void findView() { // 得到当前布局的控件对象 Tv = (TextView) findViewById(R.id.Tv); Et = (EditText) findViewById(R.id.Et); } //在xml中绑定的点击调用函数 public void myclick(View v) { //得到用户输入的用户名,得到长度 int len = Et.getText().toString().length(); //根据输入的用户名的长度,做出对应的提示。 if (len > 5 && len < 9) { Tv.setText("用户名合法,长度为:" + len); } else { Tv.setText("用户名长度非法,长度为:" + len); } } class EditChangedListener implements TextWatcher { private CharSequence temp="";//监听前的文本 private int editStart;//光标开始位置 private int editEnd;//光标结束位置 private final int charMaxNum = 10; boolean DEBUG = false; String TAG = "测试:"; @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { if (DEBUG) Log.i(TAG, "输入文本之前的状态"); temp = s; } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (DEBUG) Log.i(TAG, "输入文字中的状态,count是一次性输入字符数"); Tv.setText("还能输入" + (charMaxNum - s.length()) + "字符"); } @Override public void afterTextChanged(Editable s) { if (DEBUG) Log.i(TAG, "输入文字后的状态"); try { if (temp.length() > charMaxNum) { Toast.makeText(getApplicationContext(), "你输入的字数已经超过10了限制!", Toast.LENGTH_LONG).show(); } } catch (Exception ex) { } } } }
分类:
android
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2014-12-02 使用NPOI将DataTable生成Excel
2013-12-02 C# for AUTOCAD ActiveX获取图形对象坐标程序
2010-12-02 二调,分幅图打印(标准分幅土地利用现状图,耕地坡度分级图),图框工具
2010-12-02 二调,分幅图打印 边框注记距离内图框1毫米的程序
2010-12-02 通过ArcEngine获得注记的信息
2010-12-02 ArcEngine 获得注记文字的大小
2010-12-02 arcgis 平台实现字体左斜