焦点问题
现象:有时候在页面刚进入的时候给某个控件通过requestFocus()
获取焦点时候无效。或者进行控件初始化设置值的时候无效
解决方案:
在进入页面的时候页面可能还在渲染,没有获取焦点。这时候给某个控件调用requestFocus()
可能会出现很多意料之外的情况,有以下解决方案:
1、Activity在onResume()中进行设置UI
2、在没有生命周期的地方,通过最外层的View监听焦点变化,然后当有焦点时候进行赋值
示例代码如下:
rootView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus){
return;
}
//刷新UI,设置数据
}
});
按键问题
当一个控件设置焦点后可以监听按键监听。不过按键监听不能像手机焦点分发一样进行传递,比如,子控件传递完后父控件无法拦截