Nar*_*uto 4 android window-managers setfocus
按下按钮时,我正在给视图充气.膨胀的视图就像一个对话框,但是当我尝试将焦点放在对话框上时requestFocus(),requestFocus()返回false表示我没有关注视图,但是当我手动点击膨胀的视图时,它会收到焦点.
我究竟做错了什么?
在我在膨胀视图上调用requestFocus之前,我从按钮(用于充气新视图)中清除了焦点.
问候
View.requestFocus()方法返回false(未成功请求焦点)的可能原因是由于以下原因:
"如果视图不可聚焦(isFocusable()返回false),或者如果它是可聚焦的,并且在设备处于触摸模式时它不能在触摸模式(isFocusableInTouchMode())中聚焦,则视图实际上不会聚焦."
检查是否都isFocusable()和isFocusableInTouchMode()返回true.如果没有,你可以通过使用setFocusable()和强制它们,setFocusableInTouchMethod()如下所示.
View view;
view.setFocusable(true);
view.setFocusableInTouchMode(true);
view.requestFocus();
Run Code Online (Sandbox Code Playgroud)
在通货膨胀时调用 requestFocus() 还为时过早,尝试调用如下内容:
button.post(new Runnable(){
@Override
public void run(){
inflatedView.requestFocus();
}
});
Run Code Online (Sandbox Code Playgroud)
当主线程完成其工作后,它将将此调用安排到主队列(因此将来会调用它)。
另外,没有必要调用clearFocus();按钮本身(实际上,我不推荐它,因为框架会尝试将焦点交给其他人,并且您已经知道应该聚焦哪个视图)。
| 归档时间: |
|
| 查看次数: |
2822 次 |
| 最近记录: |