返回顶部
首页 > 资讯 > 移动开发 >Android开发 文本输入 EditText 监听器
  • 321
分享到

Android开发 文本输入 EditText 监听器

androidandroidstudio 2023-09-03 12:09:00 321人浏览 薄情痞子
摘要

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

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作