<?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) { } } }
}

最新文章

  1. PHP中判断变量为空的几种方法
  2. Asp.net Mvc 多级控制器 路由重写 及 多级Views目录 的寻找视图的规则 (多级路由) 如:Admin/Test/Index
  3. ubuntu15.10下编译安装wine1.8 rc4
  4. java基础学习04(数组与方法)
  5. ZK 父窗口与子窗口消息交互
  6. No mapping found for HTTP request with URI [] in DispatcherServlet with name &#39;appServlet&#39;
  7. 小数点输出精度控制问题 .xml
  8. C++模拟Java“内部”类
  9. HOG:从理论到OpenCV实践
  10. unigui下载文件
  11. [LeetCode#191]Number of Bits
  12. Repeat Number
  13. 20150706 js之定时器
  14. pytorch错误:RuntimeError: received 0 items of ancdata解决
  15. mysql中CONCAT值为空的问题解决办法
  16. P3232 [HNOI2013]游走
  17. 通过图片获取gps地理位置
  18. windows镜像
  19. lnmp+zabbix 3.2 的编译安装
  20. Vue2+Webpack创建vue项目

热门文章

  1. JS原型链(一)
  2. [LUOGU] P1536 村村通
  3. SVN 如何提交 SO 库文件
  4. 第一章 pyhton基础
  5. Day16模块
  6. DSP中-stack和-heap的作用
  7. AtCoder Beginner Contest 098 D - Xor Sum 2
  8. adb shell am/pm 常用命令详解与使用
  9. Java-终止应用程序
  10. tab栏切换效 简易效果