`
hbxflihua
  • 浏览: 667856 次
  • 性别: 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"/>

 

 

分享到:
评论

相关推荐

    完美得解决listview和edittext抢夺焦点和数据混乱问题

    这样,即使ListView在触摸事件中,也能保持EditText的焦点。 ```java public class EditTextListView extends ListView { // ... @Override public boolean onInterceptTouchEvent(MotionEvent ev) { int ...

    edittext失去焦点,收起键盘

    在Android开发中,EditText是用户输入文本的基本组件,通常与虚拟键盘相配合使用。然而,在某些情况下,我们可能希望在用户点击应用中的其他非EditText视图时自动隐藏键盘,以优化用户体验或保持屏幕清洁。标题...

    安卓Android源码——(EditText文本编辑).zip

    这个压缩包文件“安卓Android源码——(EditText文本编辑).zip”很可能包含了一个关于如何自定义和优化`EditText`的示例项目,或者是一些深入解析`EditText`工作原理的代码和文档。下面我们将详细探讨`EditText`在...

    Android应用源码之(EditText文本编辑).zip

    通过分析这份"EditText文本编辑"的源码,开发者不仅可以加深对EditText工作原理的理解,还能学习到如何在实际项目中优化和扩展这个组件,以提高用户体验。对于Android应用开发者来说,深入源码是提升技能、解决实际...

    Android EditText文本编辑Demo源码.rar

    这个"Android EditText文本编辑Demo源码.rar"文件包含了一个示例项目,帮助开发者深入理解和实践EditText的使用。下面将详细介绍EditText的主要功能、常见属性以及如何在实际应用中进行操作。 1. **EditText基本...

    EditText焦点的自动跳转

    在Android开发中,`EditText`是用户界面中用于接收用户输入文本的重要组件。有时,我们希望用户在完成一个`EditText`的输入后,能够自动跳转到下一个`EditText`进行继续输入,这样的交互设计可以提高用户体验,使得...

    应用源码之(EditText文本编辑).zip

    这份名为"应用源码之(EditText文本编辑).zip"的压缩包显然包含了一些关于如何理解和自定义EditText的源码示例。接下来,我们将深入探讨EditText的相关知识点。 1. **EditText基本使用**: EditText继承自TextView...

    安卓EditText输入框相关-edittext失去焦点收起键盘.rar

    本资源“安卓EditText输入框相关-edittext失去焦点收起键盘.rar”可能包含了一系列与EditText交互,特别是如何在EditText失去焦点时自动收起软键盘的实践案例。由于无法直接查看压缩包内容,以下将根据常见需求和...

    Android应用源码之(EditText文本编辑)-IT计算机-毕业设计.zip

    通过学习和实践这份"Android应用源码之(EditText文本编辑)",开发者不仅可以掌握EditText的基本用法,还能进一步了解Android UI设计、数据验证、用户交互等方面的知识,为后续的移动应用开发打下坚实基础。

    3-4(EditText文本编辑).7z

    - `setOnFocusChangeListener`:监听焦点变化,当`EditText`获得或失去焦点时执行相应代码。 4. **获取用户输入**: 通过`getText().toString()`方法可以获取`EditText`中的文本内容,例如: ```java String ...

    可以显示gif图片的Edittext

    6. **监听输入事件**:为了实现上述逻辑,我们需要监听EditText的焦点变化和文本改变事件,可以使用`OnFocusChangeListener`和`TextWatcher`。 7. **优化性能**:考虑到GIF播放可能会消耗较多CPU资源,特别是在旧...

    ScrollView内部嵌套EditText

    1. **禁用ScrollView的滚动**:当EditText获取焦点时,可以通过监听FocusChange事件,暂时禁用ScrollView的滚动,让EditText能够正常显示输入法。 ```java editText.setOnFocusChangeListener(new View....

    完美解决recyclerview item上面包含多个edittext导致数据错乱,和滑动卡顿问题

    这主要是因为EditText的焦点获取、文本输入监听和布局重绘等操作在滚动时会继续执行。为优化此问题,可以采取以下策略: - 使用`android:descendantFocusability="blocksDescendants"`属性阻止子View(如EditText...

    android listview带有editText

    总之,处理Android ListView中的EditText焦点和数据错位问题需要对Android的视图复用机制有深入理解,并能够巧妙地运用事件监听、数据模型同步等技术。在实际项目中,开发者应该根据具体需求和场景选择最适合的解决...

    Android EditText(失焦+焦点)+登录界面

    焦点管理在Android中至关重要,因为只有一个View可以拥有焦点,而这个焦点决定了哪个View可以接收用户的输入事件。当用户点击或触摸屏幕时,系统会将焦点转移到被点击的View。对于`EditText`,我们可以使用以下方法...

    Android EditText 插入表情

    可以使用`android:textInputType="textMultiLine"`属性,让`EditText`允许输入多行文本,并支持特殊字符。此外,可能还需要设置字体,确保字体库中包含所有表情对应的Unicode字符。 在处理表情输入时,需要注意一些...

    ListView 里面 EditText CheckBox RadioButton

    2. 防止事件穿透:设置EditText的android:descendantFocusability属性为`BEHIND`,使其不会抢夺父View的焦点,允许ListView正常滚动。 3. 使用TextWatcher监听文本变化,确保数据实时更新并存储。 对于CheckBox和...

    Android软件开发之EditText 详解源码

    在Android软件开发中,EditText是用户输入文本的基本控件,它是TextView的一个子类,提供了文本输入、编辑和格式化功能。本教程将深入探讨EditText的源码,帮助开发者更好地理解和利用这一关键组件。 首先,...

    EditText1.0

    - `setOnFocusChangeListener`:当`EditText`获取或失去焦点时触发的监听器。 - `setOnClickListener` 和 `setOnLongClickListener`:点击和长按事件处理。 4. 高级功能: - 密码框:通过`android:inputType=...

Global site tag (gtag.js) - Google Analytics