一个普通的带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();
}
}
|