Android弹出窗口 - 内容被剪辑

时间:2015-09-05 11:03:41

标签: java android

我在Android中使用弹出窗口创建了一个旋转工具。

但是在旋转内容时会被剪掉。我真的遇到了这个问题。

当我查看Popup窗口的来源时,有一个方法

/**
     * Clip this popup window to the screen, but not to the containing window.
     *
     * @param enabled True to clip to the screen.
     * @hide
     */
    public void setClipToScreenEnabled(boolean enabled) {
        mClipToScreen = enabled;
        setClippingEnabled(!enabled);
    }

但我无法调用相同的内容(显示为无法解析)。

2 个答案:

答案 0 :(得分:1)

@hide表示它不供公众使用,您无法看到它。

如果你想调用它,你可以通过反射来实现。

示例:

Method method = yourWindow.getClass().getMethod("setClipToScreenEnabled", new Class [] {Boolean.class});
method.invoke(true);

我建议您仔细研究系统如何调用该方法以确保它按预期工作。此外,使用隐藏方法时,它们可能存在于Android的所有版本(过去或将来)中,也可能不存在。您可能希望实现自己的对话框类型,而不是完全控制。

答案 1 :(得分:0)

对变量本身使用yourWindow.getClass()对我不起作用。我必须静态上课,比如PopupWindow.class

我的工作(和更安全)辅助方法:

public static void reflectSetClipToScreenEnabled(PopupWindow popupWindow, boolean enabled) {
    try {
        Method method = PopupWindow.class.getMethod("setClipToScreenEnabled", boolean.class);
        method.invoke(popupWindow, enabled);
    } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
        e.printStackTrace();
    }
}