Android开发中的View类的视图属性focusableInTouchMode这个属性跟focusable有什么区别?

 我来答
百度网友1103ea3
2014-10-15 · TA获得超过1217个赞
知道小有建树答主
回答量:312
采纳率:0%
帮助的人:310万
展开全部
要理解这个属性,首先你得知道,Android不是只面向手机的,它还有可能被安装在电视等非触摸输入设备上.即使是在手机上,目前很多手机也都支持键盘输入了.
focusable这种属性,更多的是为了解决非触摸输入的,因为你用遥控器或键盘点击控件,就必然要涉及到焦点的问题,只有可以获得焦点的控件才能响应键盘或者遥控器或者轨迹球的确定事件.

然后再反过来看focusableInTouchMode.这个属性的意思一如字面所述,就是在进入触摸输入模式后,该控件是否还有获得焦点的能力.
可以简单的理解为,用户一旦开始通过点击屏幕的方式输入,手机就进入了"touch mode".
focusableInTouchMode这种属性,多半是设给EditText这种即使在TouchMode下,依然需要获取焦点的控件.(请自行想下EditText为什么在touch mode下也需要焦点).
比如Button之类的控件,在touch mode下,就已经没有获取焦点的必要了.

有些地方可能表述不太准确,不知道这样说是否可以理解.
追问
大概理解了。不过你让我猜的那个,我还是有点模糊。。。
追答
直接讲术语你可能还是不容易理解(主要是我也不太会讲...),咱们想象一下EditText实际的样子.
Android里面EditText是用来接受用户输入的,那问题是在touch mode下我们没键盘,怎么办呢,android会主动给我们弹出一个软键盘出来(或者是手写输入法,这些无所谓...).
那现在想象,我们的界面上有五个这种EditText,那弹出的软键盘的输入,到底要写在哪个EditText上呢?
所以这里就需要焦点来介入了.只有获得了焦点的那个EditText,才能获取软键盘的输入.

这其实就跟你在电脑上输入是一样的场景,你在电脑上输入,会首先用鼠标(或者tab键选取)点击某个输入框,这时候这个输入框就获取焦点了,你再敲键盘的话,输入的字符就会显示在获取焦点的那个输入框里了.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式