这个好像真不好弄。gridview的机制就是越靠后z-order越高

解决方案 »

  1.   

    以前做gallery的时候也遇到类似的问题了....一直不知道怎么搞.
      

  2.   

    bringChildToFront这个方法应该没用吧
      

  3.   

    android:drawSelectorOnTop="true"  在GridView中加一下试试  
      

  4.   

    我后来是用WindowManager做的
    请问用windowmanager是怎么实现的,求指教[email protected]
      

  5.   

    自己弄个popupwindow...点击gridview的item时 让popupwindow显示在被点击的view上-.-!
      

  6.   

    请问用windowmanager是怎么实现的,求指教[email protected]
      

  7.   

    1.用个Toast挡着吧,
    2.用surfaceview来画。
    上面的问题估计是默认画的顺序是从上到下,所以被覆盖了,要不就不要弄那么大咯。。稍大就好了
      

  8.   

    楼主,经过我网上查找,借助网友的帮助和自己的探索,终于找到了解决办法。
    分三步走:
    1、更改gridView绘制item顺序,时刻保持当前select的item是最后一个刷新;
    2、利用点九图,经过本人实验数据、log输出证明,只要画一幅边缘透明的点九图,就相当于为gridView中item元素获取了绘制空间,具体设置,在xml :listselector 设置;
    3、放大,传统做法,放大一般是在adapter里面实现,但是有个缺点,在adapter里面需要notifyDataSetChanged(),每调用一次,就会装载一次数据,对于解码较慢的图像,会出现闪烁效果。本人先给出第一步,其余的我以后会写篇博客,欢迎阅读
    public class MyGridView extends GridView{
    private int position=0; public MyGridView(Context context, AttributeSet attrs) {
    super(context, attrs);
    setChildrenDrawingOrderEnabled(true);
    }

    @Override
    protected void setChildrenDrawingOrderEnabled(boolean enabled) {
    super.setChildrenDrawingOrderEnabled(enabled);
    }
    @Override
    protected int getChildDrawingOrder(int childCount, int i) {
    position = getSelectedItemPosition() - getFirstVisiblePosition();
    if(position<0){
    return i;
    }else{
    if(i == childCount - 1){//这是最后一个需要刷新的item
    if(position>i){
    position=i;
    }
                return position;
            }
    if(i == position){//这是原本要在最后一个刷新的item
    return childCount - 1;
    }
    }
    return i;
    }
    }
      

  9.   

    感谢楼上的辛苦研究与解答,我已实现第一点和第三点,但是现在边缘item的放大效果不理想,会被遮蔽,求教边缘透明的点9图具体是怎么设置的?(我的gridviewItem是基本上紧贴在一起的,放大的是convertView)。
      

  10.   

    可以在gridview之上再覆盖一层surfaceview,在点击的时候,在surfaceview中进行相关的显示