EditText也是TextView的一个子类,TextView和Button的一些属性在EditText中也同样适用。
TextView是显示文字的一个控件,但是不可以编辑,EditText是可以输入的控件。
在 activity_main.xml
中添加一个Button:
<Button
android:id="@+id/btn_edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="EditText"
android:textAllCaps="false"
/>
Button中的英文字母会自动进行大写转换, android:textAllCaps="false"
可以取消这个默认。
接下来在 MainActivity.java
中声明这个控件:
private Button mBtnEditText;
添加一个新的activity名称叫 EditTextActivity
,此时 AndroidMainfest.xml
中会自动添加如下声明:
<activity android:name=".EditTextActivity"></activity>
如果没有添加则要自己手动添加,否则会跳转失败。
之后要在 MainActivity.java
中的 onCreate
函数中使用 findViewById
找到该button,接着设置一个点击事件,使其点击之后跳转到新的界面:
mBtnEditText=findViewById(R.id.btn_edittext);
mBtnEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//跳转到EditText的演示界面
Intent intent=new Intent(MainActivity.this,EditTextActivity.class);
startActivity(intent);
}
});
常用属性
hint => 文本框内提示
textColorHint => 设置hint提示文字颜色
inputType =>
"none"//输入普通字符
"text"//输入普通字符
"textCapCharacters"//输入普通字符
"textCapWords"//单词首字母大小
textCapSentences"//仅第一个字母大小
"textAutoCorrect"//前两个自动完成
"textAutoComplete"//前两个自动完成
"textMultiLine"//多行输入
"textImeMultiLine"//输入法多行(不一定支持)
"textNoSuggestions"//不提示
"textUri"//URI格式
"textEmailAddress"//电子邮件地址格式
"textEmailSubject"//邮件主题格式
"textShortMessage"//短消息格式
"textLongMessage"//长消息格式
"textPersonName"//人名格式
"textPostalAddress"//邮政格式
"textPassword"//密码格式
"textVisiblePassword"//密码可见格式
"textWebEditText"//作为网页表单的文本格式
"textFilter"//文本筛选格式
"textPhonetic"//拼音输入格式
"number"//数字格式
"numberSigned"//有符号数字格式
"numberDecimal"//可以带小数点的浮点格式
"phone"//拨号键盘
"datetime"//日期+时间格式
"date"//日期键盘
"time"//时间键盘
drawableLeft => 编辑框内左侧绘制图片资源,= Start | 也有Top Bottom Right
drawablePadding => 图片padding
lines => 占几行(显示上)
digits => 设置只接收指定的文本内容
textAlignment => center(居中),inherit(默认,居左边显示),viewStart(居左显示),viewEnd(居右显示),textStart(居左显示),textEnd(居右显示).
extCursorDrawable => 光标颜色
android:textScaleX => 文本水平缩放系数.
android:typeface => hint字体
maxLength => 最多接收文本长度
maxHeight => 文本区域最大高度
minHeight => 文本区域最小高度
scrollHorizontally => 文本超出,是否出现横拉条
ellipsize => 文字过长时,如何显示
"start”开头省略
”end”结尾省略
”middle”中间省略
”marquee” 跑马灯
简单登录界面的制作
在 activity_edit_text.xml
中添加 EditText
和 Button
控件,具体属性设置如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp"
>
<EditText
android:id="@+id/et_1"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="20sp"
android:textColor="#000000"
android:hint="手机号"
android:inputType="number"
android:background="@drawable/bg_username"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:drawableLeft="@drawable/icon_user"
android:drawablePadding="10dp"
android:maxLines="1"
android:layout_marginTop="50dp"
/>
<EditText
android:id="@+id/et_2"
android:layout_width="match_parent"
android:layout_height="50dp"
android:textSize="20sp"
android:textColor="#000000"
android:hint="密码"
android:inputType="textPassword"
android:layout_below="@id/et_1"
android:layout_marginTop="15dp"
android:background="@drawable/bg_username"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:drawableLeft="@drawable/icon_password"
android:drawablePadding="10dp"
android:maxLines="1"
/>
<Button
android:id="@+id/btn_login"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_below="@id/et_2"
android:layout_marginTop="40dp"
android:text="登录"
android:textColor="#000000"
android:textSize="20sp"
android:background="@drawable/bg_btn4"
/>
</RelativeLayout>
接下来在 EditTextActivity.java
中声明登录的 Button
控件:
private Button mBtnLogin;
之后要在 EditTextActivity.java
中的 onCreate
函数中使用 findViewById
找到该button,接着设置一个点击事件,使其点击之后显示登录成功的字样:
mBtnLogin=findViewById(R.id.btn_login);
mBtnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(EditTextActivity.this,"登录成功!",Toast.LENGTH_SHORT).show();
}
});
具体效果如下:这里输入密码的时候手机录屏录不到o(╥﹏╥)o
监听事件
对输入内容变化的监听:
这里对输入的手机号进行监听:
在 EditTextActivity.java
中声明输入框的 EditText
控件:
private EditText mEtUsername;
之后要在 EditTextActivity.java
中的 onCreate
函数中使用 findViewById
找到该button,接着设置一个监听事件,实现可以监听输入内容,具体实现如下:
mEtUsername=findViewById(R.id.et_1);
mEtUsername.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.d("edittext",s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
});
CharSequence s
就是当前输入框的内容。
具体效果如下:
可以看到,每当输入一个内容就可以打印出来,这就实现的对输入内容的监听。