一个普通的带gridview的demo例子,在4.4之前焦点位置进入界面,第一次都是显示在上面第一个控件,然而在4.4上,焦点总是容易被gridview抢掉,参考网友答案,发现
找到問題點
感覺像是Android\frameworks\base\core\java\android\widget\AbsListView.java當中做了修正
4.3
boolean shouldShowSelector() {
return (hasFocus() && !isInTouchMode()) || touchModeDrawsInPressedState();
}
4.4
boolean shouldShowSelector() {
return (!isInTouchMode()) || (touchModeDrawsInPressedState() && isPressed());
}
改回去4.3的版本,应用一切恢复正常。
方法二:
应用层的改法view类中复写函数
|
@Override public boolean isInTouchMode() { if ( 19 <= Build.VERSION.SDK_INT){ return !(hasFocus() && ! super .isInTouchMode()); } else { return super .isInTouchMode(); } } |