2016-04-25 63 views
1

我需要一个应用程序宽标签来指示调试模式,如果激活,则会在创建一个错误报告(如果点击)。 为了让它在每个活动的顶部,我将它添加到窗口管理器。完美的应用程序。但是一些配置是通过弹出对话框片段完成的。看起来它们是活跃的,但对用户不可见。 我试过几个布局参数标志,但没有得到它的工作。系统重叠标签阻塞DialogFragment

这里是添加窗口中的代码:

final int LayoutParamFlags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; 
params = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.WRAP_CONTENT, 
       WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, 
       LayoutParamFlags, 
       PixelFormat.TRANSLUCENT); 
params.gravity = Gravity.TOP | Gravity.CENTER; 
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); 
MyLabel label = new MyLabel(); 
windowManager.addView(label, params); 

回答

0

最后,我通过测试该排在我心中的一切解决我自己的问题。

将类型从TYPE_SYSTEM_ERROR更改为TYPE_TOAST对我来说有诀窍。它仍然是所有的活动,对话框也是可见的。 我不得不添加onAttachedToWindow来设置窗口标记。

@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    params.token = getWindow().getDecorView().getRootView().getWindowToken(); 
    windowManager.addView(bugReportingLabel, params); 
}