我在这里看过几篇帖子,但这些帖子都不是我想要的。他们让我走了很长的路,但我还有一个问题需要解决。
我正在使用Xamarin for Android,目前我的目标是14级及以上的API。
我有以下代码(C#和Xamarin)
IWindowManager windowManager;
WindowManagerLayoutParams parm = null;
View statusBarView = new View(this);
windowManager = GetSystemService(Context.WindowService).JavaCast<IWindowManager>();
statusBarView.SetBackgroundColor(Color.Green);
parm = new WindowManagerLayoutParams(WindowManagerLayoutParams.FillParent, 400,
WindowManagerTypes.SystemOverlay,
WindowManagerFlags.LayoutNoLimits,
Format.Transparent);
parm.Gravity = GravityFlags.Top;
windowManager.AddView(statusBarView, parm);
注意:400只是我投入的数字进行测试,我实际上会得到状态栏的实际高度。
这显示很好,但用户仍然可以访问通知栏。有几个应用程序可以做我想要做的事情,我只需要帮助解决最后一部分难题。
该部分是如何防止触摸事件进入当前状态栏。
非常感谢所有帮助!
答案 0 :(得分:0)
您想要隐藏状态栏吗? 如果是,https://developer.android.com/training/system-ui/status.html
答案 1 :(得分:0)
如果要禁用状态栏,请使用此
protected override void OnCreate(Bundle bundle)
{
customViewGroup view = new customViewGroup(this);
WindowManagerLayoutParams localLayoutParams = new WindowManagerLayoutParams();
localLayoutParams.Type = WindowManagerTypes.SystemError;
localLayoutParams.Gravity = GravityFlags.Top;
localLayoutParams.Flags = WindowManagerFlags.NotFocusable |
WindowManagerFlags.NotTouchModal | WindowManagerFlags.LayoutInScreen;
localLayoutParams.Width = WindowManagerLayoutParams.MatchParent;
localLayoutParams.Height = (int)(50 * Resources.DisplayMetrics.ScaledDensity);
localLayoutParams.Format = Format.Transparent;
manager.AddView(view, localLayoutParams);
}
public class customViewGroup : ViewGroup
{
public customViewGroup(Context context) : base(context)
{
}
public override bool OnTouchEvent(MotionEvent ev)
{
return true;
}
protected override void OnLayout(bool changed, int l, int t, int r, int b)
{
// throw new NotImplementedException();
}
}
要再次启用,请使用
manager.RemoveView(view);