edittext 获得焦点和失去焦点

2024-04-22 06:48
文章标签 焦点 失去 获得 edittext

本文主要是介绍edittext 获得焦点和失去焦点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

记录下自己所犯的错误,在写ListView的点击事件时OnItemClickListener,onItemClick方法没有执行,导致ListView条目点击事件失效,检查发现百度上有很多不同的答案,但究其本质都是ListView的Item抢占焦点或者Item没有获取焦点甚至没有绑定上OnItemClickListener监听事件,而我所犯的错误是在ListView的Item布局中引入了一个Style,在Style中有一项<item name="android:clickable">true</item>,正是这一项导致所有Item都要抢占焦点,所以ListView的点击事件失效,在我去掉这一项之后ListView确实正常工作了。需要引以为戒的是,在androidl应用开发中,焦点没有获取或者其他组件抢占焦点的事情经常发生,我们可以在代码中,xml布局中,甚至Style中定义时候抢占焦点,在一般情况下,这个设置并不会造成什么异常,但我需要注意重要的组件在合适的时机必须拿到焦点,否则会产生意想不到的后果,比如我的ListView。一般组件获取焦点可以使用一下方法:
 
[java]  
View.setFocusable(true),对应xml : android:focusable="true".                                
View.setFocusableInTouchMode(true),对应xml : android:focusableInTouchMode="true".   
注意:这两个属性要同时使用。
两者的意思是让组件可以获得焦点。不过有些区别,前者执行false条件后,在执行true,还是不能获取焦点。后者执行上述过程,还是能获取焦点。 
当你加入上述代码后,在创建activity时,调用对应view的requestFocus(),(requestFocus()需要在setContentView之后执行)这样就可以获得焦点了。当editText失去焦点了,也就不会有软键盘了
 
但针对ListView还可以使用android:descendantFocusability属性,下面我们来看一下android:descendantFocusability用法简析
以下摘自:http://www.cnblogs.com/eyu8874521/archive/2012/10/17/2727882.html
       开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。
 
这时候就可以使用descendantFocusability来解决啦,API描述如下:
 
android:descendantFocusability
Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.
 
Must be one of the following constant values.
 
该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。
 
属性的值有三种:
 
        beforeDescendants:viewgroup会优先其子类控件而获取到焦点
 
        afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
 
        blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
 

通常我们用到的是第三种,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了,至此listview点击的灵异事件告一段落。心得:遇到不会不懂的地方除了网上查询资料之外,也可以多多去尝试每种属性的作用,多阅读官方文档(我始终觉得还是读原文的比翻译的理解的会更好)。



这篇关于edittext 获得焦点和失去焦点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/925063

相关文章

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(

myEclipse失去焦点时报错Unhandled event loop exception的解决方案

一句话:百度杀毒惹的祸。。。。果断卸载后问题解决。

Android:EditText在hint字体大小和text字体大小不一致时的设置方法

今天碰到一个需求,有一个输入框EditText,要求输入某项金额,要求在未输入文字之前,hint提示,输入文字之后显示输入的文字,要求是未输入内容时hint字体大小为14sp,输入金额之后字体大小要变成30sp。,可是EditText本身没有这个属性可以设置,怎么办呢,只有在代码中添加监听事件了: /*** 添加监听,在hint时和text时切换字体大小*/cetMoney.addTextCha

平板电脑能打电话吗?如何让不支持电话功能的平板获得电话功能?

很多选购平板电脑的朋友,都希望平板能够支持打电话功能。那么市面上所有的平板电脑能打电话吗?如果不能够打电话的平板电脑,有没有什么方法支持能够支持让其电话功能。下面我爱电脑网小编将对这个问题给大家座详细的解答   市面上的平板电脑大致共分为两种版本,一种叫做WiFi版平板电脑,另一种叫做3G版本的平板电脑。首先WiFi版的平板电脑主要通过无线路由器进行通信,有通信的距离限制。而3G版平板电

兔子--EditText去除下划线和输入字母和数字的限制

在设置密码输入框的时候,只允许输入数字和字母,设置如下属性:  android:digits="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 设置密码不可见(显示小黑点),并去除edittext的获取到焦点时候的下划线, 设置如下:

学习【C# Windows窗体】:获得进程的输出

前言 在之前的博客《创建能启动其他程序的Windows窗体》中,我启动了一个其他程序的进程。而进程的输出都显示在控制台窗口中。我在想,可否能读取这些输出,这样就可以配合一些界面显示了,例如约定一个表示进度的信息,来指导进度条的值,这虽然不怎么稳定,但是如果运行的程序也是由自己维护的,那这种方式我觉得没什么不妥。 查了一些资料之后,我发现读取进程的输出很简单(学习的过程中我参考了C#Process

成功之路:如何获得机器学习和数据科学实习机会

一年内获得两份实习机会的数据科学家的建议和技巧        欢迎来到雲闪世界。在当今竞争激烈的就业市场中,获得数据科学实习机会可以成为您在科技领域取得成功的门票。 但申请者如此之多,你该如何脱颖而出呢? 无论您是学生、应届毕业生还是想要转行到数据科学领域的人士,本文 都将指导您采取可行的策略来获得实习机会。 作为一个在一年内成功完成两次实习的人,我很高兴与大家分享对我有用的技巧。

Http请求和HttpServletRequest中获得对应参数

Enumeration<String> key = request.getParameterNames();  这个能获取到所有前端传过来的参数;其实这篇转来的文字可以深入理解下 servlet 的知识, Http请求 GET /firstSample/hello HTTP/1.1 请求行Host: localhost:8080 请求头Conne

android拍照获得图片及获得图片后并裁剪

使用android内置的相机拍照然后获取到这张照片 直接上代码: [java]  view plain copy print ? Intent intentFromCapture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);   Uri imageUri = Uri.fromFile(new File(Environ