我在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);
}
但我无法调用相同的内容(显示为无法解析)。
答案 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();
}
}