1.EditText 文本编辑框:用户输入文本信息 可以输入的文本类型如下: 常用属性: 系统默认的EditText: 效果图: 当然也可以自定义EditText的背景,比如用selector设
1.EditText
文本编辑框:用户输入文本信息
可以输入的文本类型如下:
常用属性:
系统默认的EditText:
效果图:
当然也可以自定义EditText的背景,比如用selector设定获取焦点时EditText背景的变化。
selector:
其中focus和nofocus都是自定义的shape,分别表示聚焦和没有聚焦时的背景,如下图
focus shape:
nofocus shape:
xml:
效果图:
2.焦点变更监听器
使用EditText时,可以在focus变更时触发事件,常用于检查EditText的内容或者长度。
注意这里是焦点变更,而不是点击事件,因为EditText点击一次触发的是焦点变更,第二次点击才会触发点击事件。
xml:
java:
package com.example.ch3;import Androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.EditText;import android.widget.Toast;public class FocusActivity extends AppCompatActivity implements View.OnFocusChangeListener { private EditText etPhone; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_focus); etPhone = findViewById(R.id.etPhone); findViewById(R.id.etPw).setOnFocusChangeListener(this); } @Override public void onFocusChange(View view, boolean b) { if(b){ String phoneNum = etPhone.getText().toString(); if(phoneNum.length()<11){ etPhone.requestFocus(); Toast.makeText(this, "Please enter 11-digit phone number", Toast.LENGTH_LONG).show(); } } }}
效果图:
当焦点移向密码栏时,检查手机号码的长度,若小于11位,将焦点返回手机号码栏,弹出提示。
3.文本变化监听器
监听EditText的内容变化,触发响应的动作
举例:当EditText的内容长度满足要求后,隐藏输入法窗口。
java代码:
package com.example.ch3;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.text.Editable;import android.text.TextWatcher;import android.widget.EditText;import com.example.ch3.until.UtilFunc;public class TextChangeActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_text_change); EditText et_Phone = findViewById(R.id.etPhone); EditText et_Pw = findViewById(R.id.etPw); et_Phone.addTextChangedListener(new HideTextWatcher(et_Phone, 11)); et_Pw.addTextChangedListener(new HideTextWatcher(et_Pw, 8)); } private class HideTextWatcher implements TextWatcher { private EditText et; private int maxL; public HideTextWatcher(EditText et, int maxL) { this.et = et; this.maxL = maxL; } @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 s = editable.toString(); if(s.length()==maxL){ UtilFunc.hideInput(TextChangeActivity.this, et); } } }}
隐藏输入法的工具函数实现:
package com.example.ch3.until;import android.app.Activity;import android.content.Context;import android.view.View;import android.view.inputmethod.InputMethodManager;import android.widget.EditText;public class UtilFunc { public static void hideInput(Activity act, View v){ InputMethodManager imm = (InputMethodManager) act.getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(),0); }}
来源地址:https://blog.csdn.net/jmqxnxg/article/details/129984136
--结束END--
本文标题: Android开发 文本输入 EditText 监听器
本文链接: https://lsjlt.com/news/392225.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0