一 android.support.v7.app.ActionBar导致的问题
这个项目使用了actionBar,为了让3.0一下的版本也可用,所以引入了官方的v7包,使用这个里面的actionBar,这个actionBar在构造的时候需要使用:
ActionBar actionBar = getSupportActionBar();
由此,在适配兼容性的时候遇到了如下一些问题:
1.PreferenceActivity无法使用v7.app.ActionBar
没什么好办法,只能自己实现一个关于设置的activity
2,setShowAsAction方法存在兼容性问题
3.0以上版本想在actionbar中加一个按钮可以这样写:
menu.add(0, MENU_GET_PHOTO, 0, getString(R.string.upload_pic)).setIcon(R.drawable.ic_control_camera). setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
而2.3中,MenuItem没有setShowAsAction方法,需要这样写:
MenuItem send = menu.add(0, MENU_POST_PHOTO, 0, getString(R.string.post_photo));
send.setIcon(R.drawable.ic_send);
MenuItemCompat.setShowAsAction(send, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
3.invalidateOptionsMenu方法存在兼容性问题
在2.3版本中,如果想去掉一个activity中的actionBar中的按钮需要这样写:
getActivity().supportInvalidateOptionsMenu();
二 遇到的其他适配问题
1.GridView的getColumnWidth方法问题
2.3中没有取得GridView的一个成员的宽度的方法,而在我的项目中,需要让这个成员的长宽一样,所以4.3中的代码是这样的:
mThumbPhotoAdapter.setItemHeight(mGridView.getColumnWidth());
而2.3中需要这样写:
mThumbPhotoAdapter.setItemHeight((mGridView.getWidth() - (THUMB_ITEM_COUNT - 1) * mGridView.getListPaddingLeft()) / THUMB_ITEM_COUNT);
数字游戏
2.给ListView加HeaderView时遇到的问题
在2.3中,在给listView加HeaderView时,adapter必须为空,因此必须在setAdapter之前执行addHeaderView方法,否则会出现以下异常
java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called.
而在3.0以上版本则不需要
3.Bitmap的getByteCount方法
在2.3中需要把这个方法替换成:
bitmap.getRowBytes() * bitmap.getHeight()
数字游戏+1