EditText 内容 按键 输入法 监听 示例

内容、输入法、焦点

1、弹出窗口时自动让控件获取焦点,并弹出输入法。注意要在onCreate中法中设置,不能在onResume中设置。

et.requestFocus();

new Timer().schedule(new TimerTask() {//Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。

//它可以计划执行一个任务一次或反复多次。TimerTask是一个抽象类,它的子类代表一个可以被Timer计划的任务。

@Override

public void run() {//300毫秒后,通过输入法管理器,切换输入法的显示状态

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);//切换输入法

            }

}, 300);

2、不允许手动换行,但允许自动换行

mEditText.setOnEditorActionListener(new OnEditorActionListener() {

@Override

public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

return (event.getKeyCode() == KeyEvent.KEYCODE_ENTER);

}

});

3、内容监听器TextWatcher,定义的方法onTextChanged的参数的含义

public void onTextChanged(CharSequence charSequence, int start, int before, int count) {

//text  改变后输入框中的字符串

//start 内容是从哪个位置开始改变的,第一个位置为0

//before 若为0,代表字符增加了,增加的个数为count;若不为0,代表字符减少了,减少的个数就是before的值

Log.i("bqt", charSequence + "--" + start + "--" + before + "--" + count);

onLimitLenChanged(temp.length());

}

带删除按钮的EditText-布局

<?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="wrap_content" >

<EditText

android:id="@+id/et_view"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_alignParentTop="true"

android:background="#fff"

android:gravity="center"

android:hint="请输入账号"

android:paddingBottom="14dp"

android:paddingTop="14dp"

android:singleLine="true"

android:textColor="#000"

android:textSize="13sp" />

<ImageView

android:id="@+id/iv_clean"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:layout_alignBottom="@id/et_view"

android:layout_alignRight="@id/et_view"

android:layout_alignTop="@id/et_view"

android:layout_marginRight="5dp"

android:paddingLeft="10dp"

android:paddingRight="10dp"

android:src="@drawable/delete"

android:visibility="gone" />

</RelativeLayout>

带删除按钮的EditText-代码

public class EditCancel extends FrameLayout implements TextWatcher {

private EditText et_view;//内容

private ImageView iv_clean;//清空按钮

private ITextChangeListener mTextChangeListener;//监听

public EditCancel(Context context) {

super(context);

initView(context);

}

public EditCancel(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

initView(context);

}

public EditCancel(Context context, AttributeSet attrs) {

super(context, attrs);

initView(context);

}

private void initView(Context context) {

inflate(context, R.layout.custom_editview, this);

et_view = (EditText) findViewById(R.id.et_view);

iv_clean = (ImageView) findViewById(R.id.iv_clean);

et_view.addTextChangedListener(this);

iv_clean.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

et_view.setText("");

}

});

}

@Override

public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override

public void onTextChanged(CharSequence s, int start, int before, int count) {

}

@Override

public void afterTextChanged(Editable s) {

if (s.length() > 0) iv_clean.setVisibility(View.VISIBLE);

else iv_clean.setVisibility(View.GONE);

if (mTextChangeListener != null) mTextChangeListener.onTextChange();

}

public EditText getEditText() {

return et_view;

}

public ImageView getIvClean() {

return iv_clean;

}

public ITextChangeListener getTextChangeListener() {

return mTextChangeListener;

}

public void setTextChangeListener(ITextChangeListener mTextChangeListener) {

this.mTextChangeListener = mTextChangeListener;

}

}

public interface ITextChangeListener {

    void onTextChange();

}

来自为知笔记(Wiz)

时间: 2024-11-14 20:17:18

EditText 内容 按键 输入法 监听 示例的相关文章

Android学习按键事件监听与Command模式

Android学习按键事件监听与Command模式 - Dufresne - 博客园 ? 一 Command模式 意图: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化: 对请求排队或记录请求日志,以及支持可撤销的操作. 将请求被封装成一个对象,当向某对象提交请求时,使我们可以不用去知道被具体的请求的操作或者请求的接收者, 实现了动作的请求者对象和动作的执行者对象之间的解耦合. 适用性: 使用Command模式代替callback形式的回调应用: 在不同的时刻指定.排列和执行请

Android数据库内容变化的监听

首先介绍内容监测的基本模式 基于uri的内容监测的基本模式被android.content.ContentResolver实现. 它为基于Uri的内容监测的提供了一个平台.(其实如果有必要,我们可以自己实现一个)ContentResolver为此提供了三个方法:注册监听器到某个uripublic final void registerContentObserver (Uri uri, boolean notifyForDescendents, ContentObserver observer)

Android开发之EditText 详解(addTextChangedListener监听用户输入状态)

为了实现像qq或者微信输入框的效果,当在 EditText输入字符串时发送按钮显示,当输入框字符消除掉时按钮改变.所以这时候我就要用到addTextChangedListener 用它来监听用户输入状态.可以在监听中改变用户输入的内容或者提示用户输入内容不合法等等 EditText editText = (EditText)findViewById(R.id.monitor_edit_text0); editText.addTextChangedListener(new TextWatcher(

关于 edittext 软键盘退出监听解决办法

edittext 有个onCreateInputConnection 的方法,通过它可以自定义一个输入法连接器,那里连接器里面有个方法(finishComposingText)能监听输入完成的动作. public class MyEditText extends EditText{ public MyEditText(Context context) { super(context); } private OnFinishComposingListener mFinishComposingLis

Android之EditText文本变化的监听

监听EditText的文本变化需要给EditText控件加一个addTextChangeListener监听器 editText.addTextChangeListener(textWatcher);  这里的textWatcher是一个TextWatcher对象, TextWatcher是一个接口,它有三个抽象方法,具体如下: /** *文本改变之前调用 * @param s 输入框的原内容字符串 * @param start 字符串开始改变的索引位置 * @param count 即将被替换

Android输入法 监听事件

登录界面有一个输入用户名和密码的编辑框: private EditText et_userName;// 账户 private EditText et_password;// 密码 布局文件如下: <EditText android:id="@+id/login_et_username" android:layout_width="fill_parent" android:layout_height="fill_parent" androi

JS组合按键事件监听插件

[1].[代码] [JavaScript]代码 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 7

为EditText设置OnTouchListener事件监听

在项目中需要在EditText输入前,判断某个值是否已经有值,有才可以输入,为NULL值则提示不让输入,先填写指定的编辑框 自己试过监听获取焦点事件,来设置setFocusable(true)或者setFocusable(false);但是没有成功,因为即使后来满足条件了依然无法输入 后来设置了OnTouchListener事件监听,在按下和松开都会触发该事件,会重复执行弹出的吐司,在OnTouchListener事件中因为有 MotionEvent.ACTION_DOWN &MotionEve

InputMethodManagerService处理输入法——监听APK变动

android\frameworks\base\services\java\com\android\server\InputMethodManagerService.java public InputMethodManagerService(Context context, WindowManagerService windowManager) { ....... //构建IME通知栏显示信息 mImeSwitcherNotification = new Notification(); mIme