Edittext在xml文件中设置android:focusable=“false”之后,edittext再次获得焦点。

在xml文件中,edittext这个控件设置了,android:focusable=“false”,

在代码中edittext.setfocusable(true),edittext这个控件仍然无法点击,百度之后,得到的结果是:

一定要按一下这个顺序写,重新使edittext获取焦点:

                         edittext.setFocusable(true);
 edittext.setFocusableInTouchMode(true);
 edittext.requestFocus();
 edittext.requestFocusFromTouch();

这是为什么呢?


查阅API:

setFocusable(boolean):

Set whether this view can receive the focus. Setting this to false will also ensure that this view is not focusable in touch mode.

//--设置edittext是否可以获得焦点

setFocusableInTouchMode(boolean):

Set whether this view can receive focus while in touch mode. Setting this to true will also ensure that this view is focusable.

//--设置edittext在touch模式下是否可以获得焦点

requestFocus():

Call this to try to give focus to a specific view or to one of its descendants. A view will not actually take focus if it is not focusable (isFocusable() returns false), or if it is focusable and it is not focusable in touch mode (isFocusableInTouchMode()) while the device is in touch mode. 

//--调用这个给指定的view或者它的子view焦点。如果这个view在isFocusable()方法下返回false,或者isFocusableInTouchMode()方法下返回false,这个view不会真正获得焦点

requestFocusFromTouch():

Call this to try to give focus to a specific view or to one of its descendants. This is a special variant of requestFocus() that will allow views that are not focuable in touch mode to request focus when they are touched.

//--调用这个给指定的view或者它的子view焦点。这个特别的变异于(?)requestFocus()的方法会让在这个view被touch时,给view焦点。


以上。




你可能感兴趣的:(android)