Android EditText
来源:互联网 发布:淘宝已发货可以退款吗 编辑:程序博客网 时间:2024/05/15 20:43
EditText 文本输入框
下面实现一个登录页面
主要利用EditText实现:
* 1.控制显示隐藏密码
* 2.监听EditText改变事件
* 3.控制EditText输入校验
main.xml 如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.kn_day03_3_edittext.MainActivity" >
<TextView android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="30dp"
android:layout_marginLeft="20dp"
android:layout_marginStart="20dp"
android:textSize="20sp"
android:text="用户名:" />
<TextView android:id="@+id/textview2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textview1"
android:layout_alignRight="@+id/textview1"
android:layout_alignEnd="@+id/textview1"
android:layout_marginTop="20dp"
android:textSize="20sp"
android:text="密码:"/>
<!-- 基线解释:书写英语单词时为了规范书写会设有四条线,从上至下第三条就是基线。
基线对齐主要是为了两个控件中显示的英文单词的基线对齐。 -->
<EditText android:id="@+id/edittext1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/textview1"
android:layout_toRightOf="@+id/textview1"
android:layout_toEndOf="@+id/textview1"
android:layout_alignBaseline="@+id/textview1"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:textSize="20sp"
android:hint="用户名/邮箱/手机号"
android:singleLine="true"
android:ems="10">
<!-- 请求焦点
获得焦点的输入框,默认光标闪烁,
默认弹出虚拟键盘
如果使用模拟器测试,不弹出虚拟键盘的解决方式:
如果是原生的模拟器~~确保模拟器创建的时候keyboard属性未勾选,
有勾选的不能显示虚拟键盘
如果第三方的模拟器~~打开Genymotion软件,找到模拟器,选择设置按钮,确保弹出窗口中
最下方的Uses Virtual keyboard for text input 选项有勾选上
-->
<requestFocus />
</EditText>
<!-- android:ems 设置EditText显示的时候默认的最小宽度
属性值:任意数字 代表的是最少要达到n个字节那么宽
android:hint属性用于设置输入框的默认提示
此提示的特点在于:输入框中有文字的话,显示文字,不显示提示
没有文字的话,就显示默认提示
android:textColorHint="" 可以默认提示字体的颜色
android:numeric="" 设置输入框仅输入数字
属性值:
signed 默认的
integer 整数
decimal 小数
或者通过android:inputType="number"属性也可以去设置当前的输入框
只能输入数字
精确去限制输入框中输入的内容:
android:digits ,输入框只能输入该条属性属性值中包含的文字内容,
如android:digits=“abc”则输入的值必须取自digits集合中的元素
设置输入框显示方式是密码的形式的:
android:password="true"
android:inputType = "textPassword"
-->
<EditText android:id="@+id/edittext2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/textview2"
android:layout_toEndOf="@+id/textview2"
android:layout_alignTop="@+id/textview2"
android:layout_alignBaseline="@+id/textview2"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:hint="只能输入数字"
android:inputType="number"
android:digits="1234567890"
android:password="true"
android:singleLine="true"
android:textSize="20sp" />
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/edittext2"
android:layout_below="@+id/edittext2"
android:layout_marginTop="30dp"
android:onClick="login"
android:text="登录" />
<Switch
android:id="@+id/switch1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textview2"
android:layout_below="@+id/btn1"
android:layout_marginLeft="30dp"
android:layout_marginTop="30dp"
android:textOn="显示密码"
android:textOff="隐藏密码"
/>
<!--
android:textOn="显示密码" 控制按钮在on状态的时候显示的文字内容
android:textOff="隐藏密码" 控制按钮在off状态的时候显示的文字内容
-->
</RelativeLayout>
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.kn_day03_3_edittext.MainActivity" >
<TextView android:id="@+id/textview1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="30dp"
android:layout_marginLeft="20dp"
android:layout_marginStart="20dp"
android:textSize="20sp"
android:text="用户名:" />
<TextView android:id="@+id/textview2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textview1"
android:layout_alignRight="@+id/textview1"
android:layout_alignEnd="@+id/textview1"
android:layout_marginTop="20dp"
android:textSize="20sp"
android:text="密码:"/>
<!-- 基线解释:书写英语单词时为了规范书写会设有四条线,从上至下第三条就是基线。
基线对齐主要是为了两个控件中显示的英文单词的基线对齐。 -->
<EditText android:id="@+id/edittext1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/textview1"
android:layout_toRightOf="@+id/textview1"
android:layout_toEndOf="@+id/textview1"
android:layout_alignBaseline="@+id/textview1"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:textSize="20sp"
android:hint="用户名/邮箱/手机号"
android:singleLine="true"
android:ems="10">
<!-- 请求焦点
获得焦点的输入框,默认光标闪烁,
默认弹出虚拟键盘
如果使用模拟器测试,不弹出虚拟键盘的解决方式:
如果是原生的模拟器~~确保模拟器创建的时候keyboard属性未勾选,
有勾选的不能显示虚拟键盘
如果第三方的模拟器~~打开Genymotion软件,找到模拟器,选择设置按钮,确保弹出窗口中
最下方的Uses Virtual keyboard for text input 选项有勾选上
-->
<requestFocus />
</EditText>
<!-- android:ems 设置EditText显示的时候默认的最小宽度
属性值:任意数字 代表的是最少要达到n个字节那么宽
android:hint属性用于设置输入框的默认提示
此提示的特点在于:输入框中有文字的话,显示文字,不显示提示
没有文字的话,就显示默认提示
android:textColorHint="" 可以默认提示字体的颜色
android:numeric="" 设置输入框仅输入数字
属性值:
signed 默认的
integer 整数
decimal 小数
或者通过android:inputType="number"属性也可以去设置当前的输入框
只能输入数字
精确去限制输入框中输入的内容:
android:digits ,输入框只能输入该条属性属性值中包含的文字内容,
如android:digits=“abc”则输入的值必须取自digits集合中的元素
设置输入框显示方式是密码的形式的:
android:password="true"
android:inputType = "textPassword"
-->
<EditText android:id="@+id/edittext2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/textview2"
android:layout_toEndOf="@+id/textview2"
android:layout_alignTop="@+id/textview2"
android:layout_alignBaseline="@+id/textview2"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:hint="只能输入数字"
android:inputType="number"
android:digits="1234567890"
android:password="true"
android:singleLine="true"
android:textSize="20sp" />
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/edittext2"
android:layout_below="@+id/edittext2"
android:layout_marginTop="30dp"
android:onClick="login"
android:text="登录" />
<Switch
android:id="@+id/switch1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textview2"
android:layout_below="@+id/btn1"
android:layout_marginLeft="30dp"
android:layout_marginTop="30dp"
android:textOn="显示密码"
android:textOff="隐藏密码"
/>
<!--
android:textOn="显示密码" 控制按钮在on状态的时候显示的文字内容
android:textOff="隐藏密码" 控制按钮在off状态的时候显示的文字内容
-->
</RelativeLayout>
EditText 的android:inputType属性有很多功能
<!-- android:inputType
功能:
大体上分3个方面
1.限制输入框中输入的内容
2.设置输入框中的内容显示的是密码的.
3.给弹出的虚拟键盘中添加一些针对某情况好用的按钮
android:inputType=”none”
android:inputType=”text”
android:inputType=”textCapCharacters” 字母大写
android:inputType=”textCapWords” 首字母大写
android:inputType=”textCapSentences” 仅第一个字母大写
android:inputType=”textAutoCorrect” 自动完成
android:inputType=”textAutoComplete” 自动完成
android:inputType=”textMultiLine” 多行输入
android:inputType=”textImeMultiLine” 输入法多行(如果支持)
android:inputType=”textNoSuggestions” 不提示
android:inputType=”textUri” 网址
android:inputType=”textEmailAddress” 电子邮件地址
android:inputType=”textEmailSubject” 邮件主题
android:inputType=”textShortMessage” 短讯
android:inputType=”textLongMessage” 长信息
android:inputType=”textPersonName” 人名
android:inputType=”textPostalAddress” 地址
android:inputType=”textPassword” 密码
android:inputType=”textVisiblePassword” 可见密码
android:inputType=”textWebEditText” 作为网页表单的文本
android:inputType=”textFilter” 文本筛选过滤
android:inputType=”textPhonetic” 拼音输入
//数值类型
android:inputType=”number” 数字
android:inputType=”numberSigned” 带符号数字格式
android:inputType=”numberDecimal” 带小数点的浮点格式
android:inputType=”phone” 拨号键盘
android:inputType=”datetime” 时间日期
android:inputType=”date” 日期键盘
android:inputType=”time” 时间键盘
-->
MainActivity.java
package com.example.kn_day03_3_edittext;
import android.app.Activity;
import android.graphics.Rect;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputType;
import android.text.TextWatcher;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.text.method.TransformationMethod;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.Switch;
/**
* EditText学习
* @author KNOWN
* 要点:
* 1.控制显示隐藏密码
* 2.监听EditText改变事件
* 3.控制EditText输入校验
*/
public class MainActivity extends Activity {
EditText uname;
EditText upwd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
uname = (EditText)findViewById(R.id.edittext1);
upwd = (EditText)findViewById(R.id.edittext2);
Switch s = (Switch)findViewById(R.id.switch1);
/**
* 1.控制显示隐藏密码
* 设置switch按钮状态改变的监听
*/
s.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
// 动态的改变输入框中密码的显示方式
// 如果密码.的显示是通过布局文件中
//android:password=“true”的属性实现的话
/* 通过setTransformationMethod方法实现
* HideReturnsTransformationMethod.getInstance() 代表获得一个对象,特点是:将.变成对应的文字 .->文字
* PasswordTransformationMethod.getInstance() 获得一个对象,该对象的特点是:将文字变成. 文字->.
*/
if (isChecked) {//显示密码被选中时执行
Log.i("switch", "on");
upwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
} else {//隐藏密码被选中时执行
Log.i("switch", "off");
upwd.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
//如果在xml中使用的是inputtype去控制的密码显示
/*if (isChecked) { //显示密码
upwd.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
} else { //隐藏密码
upwd.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_PASSWORD);
}*/
}
});
//
/**
* 2.监听EditText改变事件
* 添加--文本框改变监控事件 监控输入框中输入内容的变化
* 注:当把鼠标点入输入框,到鼠标离开输入框,每输入一个字符都会出发内部的3个函数
*/
upwd.addTextChangedListener(new TextWatcher() {
/**
* 文字正在改变的时候运行
*/
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
Log.i("onTextChanged", "CharSequence s, int start, int before, int count:"+s+","+start+","+before+","+count);
}
/**
* 内容改变前会运行的方法
*
*/
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
Log.i("beforeTextChanged", "harSequence s, int start, int count,int after:"+s+","+start+","+count+","+after);
}
/**
* 文字改变后会运行的方法
* s 参数对应改变后的文字
*/
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
Log.i("afterTextChanged", "Editable s:"+s.toString());
/*
* 3.控制EditText输入校验
* 需求:判断当前的输入框中输入的内容是否含有2,如果有的话,提示
* */
if(s.toString().contains("2")) {
upwd.setError("文字里有2了");
}
}
});
}
//登录事件
public void login(View v){
//验证用户名密码是否存在正确
String name = uname.getText().toString();
String pwd = upwd.getText().toString();
/*
* 连接数据库校验
* ....
*/
Log.i("login status", "login success!uname="+name+"&upwd="+pwd);
}
}
0 0
- android-edittext
- android edittext
- android edittext
- Android:EditText
- android-----EditText
- android Edittext
- Android EditText
- android edittext
- android Edittext
- android EditText
- android editText
- Android EditText
- Edittext ---Android
- Android EditText
- 【EditText】Android 中设置 EditText 光标颜色
- 【EditText】Android设置EditText不可编辑
- Android Edittext Inputtype
- Android EditText 学习笔记
- matlab中的graythresh函数的实例
- [Java] Xfire开发WebService
- Conditional Navigation Rule in JSF 2.0
- 我在CSDN上有了自己的博客
- 如何阅读科研论文
- Android EditText
- Boost.Lockfree官方文档翻译
- javaScript月份从零算起
- JSF “from-action” navigation rule example
- HorizontalScrollView 的使用
- 20150827_tomcat架构_Server.xml详解
- iOS部分-UI基础控件 - 01天 入门 第05课 关闭键盘
- 驱动主要数据结构
- iOS部分-UI基础控件 - 01天 入门 第06课 gif的简单实用