alex001001001 2015-10-02 06:32 采纳率: 0%
浏览 775

android studio用不了popwin的showAtLocation

用不showAtLocation,但是showAsDropDown又没有问题。第二个参数,关于gravity的一直填不了

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-04 10:01
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Android Studio中,showAtLocation方法是用于显示一个Dialog窗口到屏幕上的特定位置(例如,顶部、底部或中间)。然而,在某些情况下,你可能会遇到showAsDropDown方法无法正常工作的情况。

    如果你尝试使用showAsDropDown时遇到了问题,可能是由于以下原因:

    1. Gravity值未正确设置:确保你的Gravity值与你要使用的屏幕区域相匹配。例如,如果要将Dialog窗口放在屏幕中间,你可以将其设置为Gravity.CENTER_VERTICAL
    2. 旋转设备:如果你的设备正在旋转,可能会影响对话框的位置。在这种情况下,可以考虑使用WindowManager.LayoutParams来设置布局参数。
    3. 系统版本:不同的系统版本可能会有不同的行为。在一些更老的系统版本中,可能无法使用showAtLocationshowAsDropDown

    解决上述问题的方法如下:

    // 设置对话框的大小
    int width = 400;
    int height = 200;
    
    Window window = getWindow();
    window.setLayout(width, height);
    
    // 设置对话框的位置
    Point location = new Point();
    
    if (location == null) {
        return;
    }
    
    // 获取屏幕的宽度和高度
    Display display = getWindowManager().getDefaultDisplay();
    display.getSize(location);
    int x = location.x + (int)(location.y * -0.5); // 取得屏幕的一半高作为偏移量
    int y = location.y + (int)(location.x * -0.5); // 取得屏幕的一半宽作为偏移量
    
    // 将dialog窗口放置在指定位置
    dialog.showAtLocation(window, Gravity.TOP | Gravity.START, x, y);
    

    在这个示例中,我们首先设置了对话框的大小,并获取了屏幕的尺寸。然后,我们计算出对话框相对于屏幕中心的偏移量,最后使用这些信息来定位对话框。请注意,这个例子中的Gravity值是在WindowManager.LayoutParams中设置的,而不是直接在showAtLocation方法中设置的。

    希望这能帮助你解决问题!

    评论

报告相同问题?