Android view获取其本身在屏幕中的位置和尺寸的方法

来源:互联网 发布:淘宝上下架规则2017 编辑:程序博客网 时间:2024/05/18 03:06

以ListView的item为例:

    detail_list.setOnItemClickListener(new AdapterView.OnItemClickListener(){        @Override        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {            DeviceItem deviceItem=deviceItemList.get(position);            //获取单击Item的位置和尺寸            int[] pos=new int[2];            Rect rec=new Rect();            view.getLocationOnScreen(pos);            view.getLocalVisibleRect(rec);            MyPopDialog popDialog=new MyPopDialog(getContext(),user,permission,deviceItem);//传递当前用户信息和点击项            popDialog.setContentView(R.layout.dialog_pop);            popDialog.show();            //放在show()之后,不然有些属性是没有效果的,比如height和width            Window dialogWindow = popDialog.getWindow();            WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值            p.height = (int) (rec.height()); // 高度设置为屏幕的1.0            p.width = (int) (rec.width()); // 宽度设置为屏幕的0.65//设置位置            p.gravity = Gravity.RIGHT|Gravity.TOP;            p.x = 0;            p.y = pos[1]-getStatusBarHeight();//设置透明度            p.alpha = 1.0f;            dialogWindow.setAttributes(p);        }    });


点击ListViewd的item后创建了一个对话框遮挡住当前item,MyPopDialog继承自Dialog,getStatusBarHeight()用于获取状态栏的高度(程序中没有标题栏)
    private int getStatusBarHeight(){        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");        if(resourceId>0){            return context.getResources().getDimensionPixelSize(resourceId);        }        return 0;    }


0 0
原创粉丝点击