android适配2.3遇到的问题(1)

一 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

 

你可能感兴趣的:(android,移动开发,java)