Android requestFocus()返回false

Android requestFocus()返回false,android,setfocus,window-managers,Android,Setfocus,Window Managers,按下按钮时,我正在放大视图。膨胀视图类似于一个对话框,但是当我尝试使用requestFocus()获取对话框的焦点时,requestFocus()返回false表示我没有获取视图的焦点,但是当我手动点击膨胀视图时,它接收到焦点 我做错了什么 在调用requestFocus on Influded view(充气视图)之前,我先从按钮(用于充气新视图)中清除焦点 关于在通货膨胀时调用requestFocus()还为时过早,请尝试调用如下内容: button.post(new Runnable(){

按下按钮时,我正在放大视图。膨胀视图类似于一个对话框,但是当我尝试使用
requestFocus()
获取对话框的焦点时,requestFocus()返回false表示我没有获取视图的焦点,但是当我手动点击膨胀视图时,它接收到焦点

我做错了什么

在调用requestFocus on Influded view(充气视图)之前,我先从按钮(用于充气新视图)中清除焦点


关于

在通货膨胀时调用requestFocus()还为时过早,请尝试调用如下内容:

button.post(new Runnable(){
    @Override 
    public void run(){
       inflatedView.requestFocus();
    }
});
它将在主线程在此完成其工作后,安排对主队列的调用(因此将来将调用它)

另外,不需要调用
clearFocus()(实际上,我不建议这样做,因为框架将尝试将焦点交给其他人,并且您已经知道应该聚焦哪个视图)。

该方法返回false(未成功请求焦点)的一个可能原因是以下原因:

如果视图不可聚焦(isFocusable()返回false),或者当设备处于触摸模式时,视图可聚焦且在触摸模式下不可聚焦(isFocusableInTouchMode()),则视图实际上不会对焦

检查
isFocusable()
isFocusableInTouchMode()
是否都返回true。如果没有,您可以使用
setFocusable()
setFocusableInTouchMethod()
强制它们,如下所示

View view;
view.setFocusable(true);
view.setFocusableInTouchMode(true);
view.requestFocus();

我想再加上一个例子,当它返回false时,这种情况会发生在我身上。当您要为具有0个维度的EditText请求焦点时