您的位置:首页 > 移动开发 > Android开发

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

2017-05-12 18:09 519 查看
以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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: