我想在popupwindow上设置左右边距。我尝试在layout
上设置布局参数,然后设置保证金,但不起作用。
任何人都可以给我设置在popupwindow上设置保证金的代码
这是代码
LayoutInflater inflater = (LayoutInflater) QuestionsActiviy.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.popup, (ViewGroup) findViewById(R.id.popup_element));
ratePw = new PopupWindow(layout);
ratePw.setWidth(WindowManager.LayoutParams.FILL_PARENT);
ratePw.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
ratePw.setFocusable(true);
ratePw.showAtLocation(layout, Gravity.CENTER, 0, 0);
感谢。
答案 0 :(得分:16)
因为您的布局是窗口顶部,并且您通过使用屏幕的宽度和高度动态地执行此操作,因此要在sll侧设置边距10,您可以使用:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
LayoutInflater inflater = (LayoutInflater) QuestionsActiviy.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.popup, (ViewGroup) findViewById(R.id.popup_element));
ratePw = new PopupWindow(layout);
ratePw.setWidth(width-20);
ratePw.setHeight(height-20);
ratePw.setFocusable(true);
答案 1 :(得分:0)
LayoutParams parm1=new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
parm1.setMargins(20, 20, 0, 0);
layout.setLayoutParams(parm1);
//ratePw.addView(layout,parm1); // removed it
ratePw.setContentView(layout);
实际上,layoutParams.setMargins的格式(左,上,右,下);
答案 2 :(得分:0)
我唯一的解决方案是在 custom_popup.xml 布局中添加宽度和高度为 20dp(或其他)的 2 个透明相对布局。只需将它们设置在主布局的右侧和顶部即可。
您也可以使用 popup.showAsDropDown(anchorVIew, 480, -100) 并手动分配位置而不是 showAtLocation()