在Android开发过程中,输入框(EditText)的使用相当频繁,如:用户输入账号、密码实现登录,聊天界面输入文字等等。下面我们来简单了解一下输入框的属性和使用方法。
一、简介:
- EditText是TextView的子类,它继承了TextView的所有属性。继承关系:View-->TextView-->EditText 。点击查看TextView属性。
- EditText特有的属性:
属性 | 作用 |
---|---|
inputType | 输入内容的格式 |
letterSpacing | 输入的内容之间的间距 |
editable | 设置是否可以编辑 |
hint | 设置默认提示文字 |
paddingLeft | 输入的文本与输入框左边的距离 |
- 常用方法:
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
//文本变化前
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
//文本变化时
}
@Override
public void afterTextChanged(Editable editable) {
//文本变化后(一般使用此方法)
//将变化后的文本转化为字符串并接收
String inputPassward = editable.toString();
}
});
二、练习:
效果图:
效果图
代码流程图:
流程图
代码:
在xml文件中进行布局
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请设置密码"
android:textSize="40sp"
android:textColor="@color/colorGray"
android:layout_marginTop="90dp"
android:layout_marginLeft="90dp"
/>
<EditText
android:id="@+id/edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="150dp"
android:background="@drawable/lock"
android:textColor="@color/colorAccent"
android:textSize="@dimen/dimen_alert"
android:paddingLeft="20dp"
android:inputType="textPassword"
android:maxLines="1"
android:maxLength="6"
android:cursorVisible="false"
android:letterSpacing="0.5"
/>
MainActivity中实现功能:
EditText editText;
TextView textView;
String password;
String firstInput;
SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.edit);
textView = findViewById(R.id.text);
// 获取资源文件名
// Resources resources = getResources();
final String fileName = getResources().getString(R.string.file_name);
sp = getSharedPreferences(fileName,0);
password = sp.getString("pwd",null);
if (password == null){
textView.setText("请设置密码");
}else {
textView.setText("请输入密码");
}
// 监听内容改变的事件
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
String inputPassward = editable.toString();
if (inputPassward.length() == 6){
if (password == null){
if (firstInput == null){
firstInput = inputPassward;
textView.setText("请确认密码");
editText.setText("");
}else {
if (inputPassward.equals(firstInput)){
textView.setText("密码设置成功");
editText.setText("");
SharedPreferences.Editor edit = sp.edit();
edit.putString("pwd",firstInput);
edit.commit();
goToNext();
textView.setText("请输入密码");
}else {
textView.setText("两次密码不一样,请重新设置");
firstInput = null;
editText.setText("");
}
}
}else {
if (inputPassward.equals(password)){
textView.setText("解锁成功");
editText.setText("");
goToNext();
textView.setText("请输入密码");
}else {
textView.setText("密码错误,请重新输入");
editText.setText("");
}
}
}
}
});
}
}
网友评论