在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焦点。
以上。
原文链接:https://www.f2er.com/xml/297299.html