android:通过代码在PopupWindow上设置margin

时间:2012-03-02 10:17:30

标签: android

我想在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);

感谢。

3 个答案:

答案 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 个透明相对布局。只需将它们设置在主布局的右侧和顶部即可。

Bluepriont Screen

您也可以使用 popup.showAsDropDown(anchorVIew, 480, -100) 并手动分配位置而不是 showAtLocation()