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);
}
});
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; }
相关文章推荐
- android 在Activity下获取getWindowManager()的屏幕尺寸和自定义View下的获取尺寸
- Android获取View尺寸的三种方法
- Android 获取屏幕宽度尺寸的方法
- android上准确获取屏幕尺寸的方法
- android获取控件位置坐标,屏幕尺寸,标题栏,状态栏高度
- Android 获取view在屏幕中的位置
- android 获取view在屏幕中的位置
- android使用service和activity获取屏幕尺寸的方法
- Android View各种尺寸位置相关的方法探究
- Android 获取屏幕实际显示尺寸的方法
- Android中获取屏幕物理尺寸的方法
- Android屏幕尺寸获取方法详解
- Android获取控件位置坐标,屏幕尺寸,标题栏,状态栏高度
- Android View的坐标系及其相应获取位置信息的方法
- android获取自己定义控件位置坐标,屏幕尺寸,标题栏,状态栏高度
- android 获取view在屏幕中的位置
- android 中获取当前焦点所在屏幕中的位置 view.getLocationOnScreen(location)
- Android 获取view在屏幕中的位置
- android 获取屏幕尺寸方法
- Android获取View在屏幕中的位置