gpt4 book ai didi

android - Honeycomb 3.1/Mono for Android 持续存在 'LightsOut'

转载 作者:行者123 更新时间:2023-11-29 22:11:40 25 4
gpt4 key购买 nike

我使用适用于 Android 的 Mono 开发了我的应用程序。我有最新版本 4.0.3。我的 AndroidManifest.xml 指定:

<uses-sdk android:targetSdkVersion="11" android:minSdkVersion="8" />

该应用程序在平板电脑上运行,因此在 Honeycomb 中我需要隐藏屏幕底部的状态栏。我就是这样做的(使用简单的扩展方法):

internal static void LightsOut(this View view)
{
try
{
IntPtr view_setSystemUiVisibility = JNIEnv.GetMethodID(view.Class.Handle, "setSystemUiVisibility", "(I)V");
JNIEnv.CallVoidMethod(view.Handle, view_setSystemUiVisibility, new JValue(1));
}
catch
{ }
}

我在实例化的每个 View 上调用它。在我的摩托罗拉 Xoom 上,运行 3.0.1,这很好

在我运行 3.1 的 Samsung Galaxy Tab 上,它可以工作;但是状态栏会在短时间后恢复。在 Android 日志中,我看到正在调用 LightsOn()...

如何防止状态栏在 3.1 中恢复?我看到了这个事件:

http://developer.android.com/reference/android/view/View.OnSystemUiVisibilityChangeListener.html

我想我可以用它来隐藏状态栏,如果它回来了。但我不知道如何订阅它(它没有显示在 Intellisense 中)。

最佳答案

在状态栏返回之前是否发生了特定的事情,或者仅仅是时间相关的?快速搜索 ICS source建议当顶部应用程序窗口更改时,状态栏状态将被重置。当您看到此行为时,您是在调用 StartActivity() 还是转移到另一个应用?

View.OnSystemUiVisibilityChangeListener 接口(interface)已绑定(bind)为 View.IOnSystemUiVisibilityChangeListener界面并通过View.SystemUiVisibilityChange事件。但是,这两种机制都要求您的 $(TargetFrameworkVersion) 以 Android v3.1 或更高版本为目标,这将设置您的 //uses-sdk/@android:minSdkVersion 属性到 12,因此这是您(大概)不想做的事情。

我在这里看到两个看似合理的解决方案:

  1. 找出调用 LightsOn() 的原因并尝试解决它(在每个 Activity.OnCreate() 中调用 LightsOut() > 方法?)。
  2. 提供您应用的两个版本,一个的 minSdkVersion8,另一个为(至少)12,然后使用Multiple APK Support将两者都包含在您的程序中。然后设备将运行适当的包,允许访问 View.SystemUiVisibilityChange 事件。

关于android - Honeycomb 3.1/Mono for Android 持续存在 'LightsOut',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9472185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com