Android在屏幕任意位置显示对话框 4年前

下面是设置对话框x的偏移量。

int marginLeft = 100;
    Window window = getDialog().getWindow();
        WindowManager.LayoutParams wmlp =window.getAttributes();
        wmlp.gravity = Gravity.LEFT;
        wmlp.x = marginLeft;
        Log.i(getTag(), "wmlp="+wmlp);
        window.setAttributes(wmlp);

值得注意的是: 我们要看看WindowManager.LayoutParams的文档中关于x,y属性的说明:

/**
         * X position for this window.  With the default gravity it is ignored.
         * When using {@link Gravity#LEFT} or {@link Gravity#START} or {@link Gravity#RIGHT} or
         * {@link Gravity#END} it provides an offset from the given edge.
         */
        @ViewDebug.ExportedProperty
        public int x;
        
        /**
         * Y position for this window.  With the default gravity it is ignored.
         * When using {@link Gravity#TOP} or {@link Gravity#BOTTOM} it provides
         * an offset from the given edge.
         */
        @ViewDebug.ExportedProperty
        public int y;

重要的两点就是:

 (1)如果你需要设置x的值,那么需要将gravity设置有LEFT,START,RIGHT或者END。

  (2)如果你需要设置y的值,那么需要将gravity设置成有TOP,BOTTOM。

上面的两点,如果你的对FrameLayout设置的margin不起作用了,可能也是需要遵守上面两点规则。

l
lzb
泪眼问花花不语,乱红飞过秋千去。
3
发布数
2
关注者
1906
累计阅读

热门教程文档

Lua
21小节
Rust
84小节
Swift
54小节
Next
43小节
CSS
33小节
广告