`
hbxflihua
  • 浏览: 659596 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

EditText 文本焦点事件

阅读更多

焦点改变监听:setOnFocusChangeListener

这个监听比较实用,尤其是在页面中有多个文本,并且要对部分文本进行有效验证的时候。

简单示例如下:

 

 

 

		signWords.setOnFocusChangeListener(new View.OnFocusChangeListener() {
			
			@Override
			public void onFocusChange(View v, boolean hasFocus) {
				if(hasFocus){//获得焦点
					//在这里可以对获得焦点进行处理
				}else{//失去焦点
					//在这里可以对输入的文本内容进行有效的验证
				}
			}			
		});

 

 

 

以上的这个监听有一个弊端,就是如果页面只有一个EditText,该EditText一旦获得焦点就不会再失去焦点。这是个比较让人头痛的问题。想在此时进行有效的验证恐怕是很难做到的。

 

 

 

文本内容改变监听:addTextChangedListener

这个监听是在EditText的文本内容发生改变的时候进行触发的。触发的频率比上面的监听要高得多。所以一般不建议使用。如果你有特殊的需求,使用起来也是挺方便的。

简单的示例如下:

 

 

 

		signWords.addTextChangedListener(new TextWatcher() {
			
			@Override
			public void onTextChanged(CharSequence s, int start, int before, int count) {
				
				if(start>0&&
						CommonUtils.matchString(checkAllow, String.valueOf(true))&&
						CommonUtils.matchString(signAttr, "sureAllowName")){//工作许可人
					
					System.out.println("changed:"+s);
					
					TaskParams params = new TaskParams();
					params.put("searchNames", String.valueOf(s));
					UserSearchTask task = new UserSearchTask();
					task.setListener(tuserSearchTaskListener);
					task.execute(params);
					
				}
			}
			
			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {
			}
			
			@Override
			public void afterTextChanged(Editable s) {				
				
			}
		});

 

 

 以下是调用的任务及监听事件

 

	/**
	 * 根据语音搜索用户任务
	 * 
	 * @author lihua
	 */
	private class UserSearchTask extends GenericTask {

		@Override
		protected String _doInBackground(TaskParams... params) {
			try {
				return getApi().getSearchUserByNames(
						params[0].getString("searchNames"));
			} catch (HttpException e) {
				e.printStackTrace();
				return "error";
			}
		}
	}

/**
	 * 搜索用户任务监听
	 */
	private TaskListener tuserSearchTaskListener = new TaskAdapter() {

		@Override
		public void onPostExecute(GenericTask task, String result) {

			try {
				JSONObject object = new JSONObject(result);
				
				if("true".equals(object.getString("success"))){
					
					sysUserId = object.getString("sysUserId");
					signWords.setText(object.getString("fullName"));
					
				}else{
					//Toast.makeText(getApplicationContext(), "未找到相符的工作人员姓名", Toast.LENGTH_LONG).show();
					
				}
			} catch (JSONException e) {
				e.printStackTrace();
			}
			
		}

		@Override
		public String getName() {
			return "Login";
		}
	};

 

 

 

如果一个ActivityDialog中就一个EditText,而不想在打开该ActivityDialog时将焦点设置在EditText中。这里提一点,如果页面中有EditText,系统会默认将焦点移到第一个EditText上。可以采取如下方式:

在对应的XML文件中放置一个没有任何内容的LinearLayout

 

 

   	    <LinearLayout
	   	android:id="@+id/ll_focus"
		android:focusable="true"
		android:focusableInTouchMode="true"
		android:layout_width="fill_parent"
	        android:layout_height="wrap_content"
	        android:orientation="horizontal" 
	        android:layout_marginTop="0px"/>

 

 

分享到:
评论

相关推荐

    Android开发EditText属性.txt

     android:selectAllOnFocus如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。TextView中设置后无效果。  android:shadowColor指定文本阴影的颜色,需要与shadowRadius一起使用。...

    Android控件系列之EditText使用方法

    1、掌握在Android中如何建立EditText2、掌握EditText的常用属性3、掌握EditText焦点的事件、按键的事件(监听器) 介绍: EditText是接受用户输入信息的最重要控件。通过前面课程的学习,您可能会猜到可以利用...

    受Google联系人应用的“添加新联系人”屏幕中EditText字段启发的EditText装饰器-Android开发

    每当编辑文本获得焦点时,AwesomeTextInputLayout就会受到Google Contact App的Add New Contact屏幕中EditText字段的启发而产生的EditText装饰器。 EditText被圆角矩形边框包围。 只要编辑文本获得焦点并且为空,则...

    EasyKeyBoardView-master.rar

    3)自定义键盘 方案1: 1)键盘在scrollview外面,布局写死,默认隐藏。 ... 1)用键盘高度减去edittext高度得到scrollview移动距离,进行scrollview内容移动。...//获得焦点时全选文本 et.requestFocus(); //请求获取焦点

    cordova-plugin-scanner-input

    在其内部,有一个标准的EditText组件,该组件可以从代码中接收输入,这些代码错误地寻找要设置其文本的焦点输入。 在带有内置条形码扫描仪的设备上遇到了此类代码。 用法 通过cordova plugin add命令安装插件。 ...

    Android开发案例驱动教程 配套代码

    5.3 EditText 65 5.4 RadioButton和RadioGroup 66 5.4.1 RadioButton 66 5.4.2 RadioGroup 67 5.5 CheckBox 68 5.6 ImageView 70 5.7 Progress Bar 70 5.7.1 条状进度条 71 5.7.2 圆形进度条 73 5.7.3 ...

    老罗android视频开发源码和ppt经典

    6.1 TextView如何显示丰富的文本 6.2 TextView显示表情图像和文字 6.3 TextView单击链接弹出Activity 6.4 TextView实现跑马灯效果 6.5 EditText输入表情图像 6.6 EditText中输入特定的字符 6.7 AutoCompleteTextView...

    android实习报告(1).doc

    2.Android图形设计UI Android UI控件一般写在布局文件中,此次实习所学控件主要有:TextView,EditText Button 、AlertDialog、RadioButton、CheckBox、Spinner和TableRow等。将这些控件及相应的 属性写在layout下...

    C#实现带搜索功能的ComboBox

    带搜索的ComboBox就是给ComboBox一个依赖属性的ItemSource,然后通过数据源中是否包含要查询的值,重新给ComboBox绑定数据源。 public class EditComboBox : ComboBox { private bool t = true;...//编辑文本内

Global site tag (gtag.js) - Google Analytics