我有两个问题:
我已经尝试了很多但仍在努力实现这一目标,但无法找到解决方案。
我发现的解决方案列表但是他们没有满足我的要求
这只会隐藏通知栏。
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow()setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
也只隐藏通知栏
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
它导航栏没有隐藏它的低配置文件。
getWindow()getDecorView()setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
对我的活动没有影响。
anyView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
请注意:
在我的研究和你的答案之后,我得到了这个:
但我的应用看起来应该没有导航条:
我不希望系统导航栏在我的应用中可见。
答案 0 :(得分:29)
我不确定您的目标是什么,但以下内容隐藏了通知栏和软导航键(如Google Nexus设备上所示),因此该应用基本上是“全屏”。
<强> EDIT2 强>
在Android 4.4(API 19)中,谷歌推出了新的沉浸式模式,该模式可隐藏状态&amp;导航栏并允许真正的全屏用户界面。
// This snippet hides the system bars.
private void hideSystemUI() {
// Set the IMMERSIVE flag.
// Set the content to appear under the system bars so that the content
// doesn't resize when the system bars hide and show.
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE);
}
// This snippet shows the system bars. It does this by removing all the flags
// except for the ones that make the content appear under the system bars.
private void showSystemUI() {
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
参考:
https://developer.android.com/training/system-ui/immersive.html
修改强>
使用Soft Nav键在Android 4.3(API 18)和Android 4.1(API 16)上进行测试。
@Override
protected void onCreate(Bundle b) {
super.onCreate(b);
setContentView(R.layout.main);
int mUIFlag = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
getWindow().getDecorView().setSystemUiVisibility(mUIFlag);
}
有关更多信息,请阅读http://developer.android.com/reference/android/view/View.html#setSystemUiVisibility(int)
答案 1 :(得分:2)
- 隐藏状态栏:
我为该问题找到了一个很好的解决方案,设置了每个活动theme
&amp; windowSoftInputMode
以下值:
<activity android:name=".MyActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="adjustResize"> <!-- theme : to set the activity to a full screen mode without a status bar(like in some games) -->
</activity> <!-- windowSoftInputMode : to resize the activity so that it fits the condition of displaying a softkeyboard -->
了解更多信息refer here。
- 隐藏通知栏:
有两种方式:
1 - root您的设备,然后在adb window command
中打开设备,然后运行以下命令:
adb shell >
su >
pm disable com.android.systemui >
要取回它,只需将disable
更改为enable
即可。
2 - 将以下行添加到设备 build.prop 文件的末尾:
qemu.hw.mainkeys = 1
然后把它取回来删除它。
如果您不知道如何编辑 build.prop 文件:
答案 2 :(得分:1)
在新的Android 4.4上你应该添加这一行:
View.SYSTEM_UI_FLAG_IMMERSIVE;
所以至少在nexus4 4.4.2上的新工作解决方案是
final int mUIFlag =
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE;
虽然它与其他标志结合使用时,单独沉浸不会起作用。有关详细信息,请参阅文档 然后在活动中添加此设置的激活,如前所示(我只是添加一致性)
getWindow().getDecorView().setSystemUiVisibility(mUIFlag);
答案 3 :(得分:0)
我制作了2个布局,一个用于常规尺寸,一个用于全屏,在内部全屏我获得设备尺寸并将其分配给视频播放器
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getRealSize(size);
int w=size.x;
int h=size.y;
videoPlayer.setFixedSize(w, h);
答案 4 :(得分:0)
我认为你无法隐藏android 4.0中的系统栏&gt; (仅限平板电脑,手机应该可以使用)
你可以做的是隐藏图标并禁用一些按钮(除了家庭以外的所有人)
你可以试试这个:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
}
还用于禁用按钮:
这是用于后退按钮:
public boolean onKeyDown(int keyCode, KeyEvent event) {
return false;
}
这是菜单:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
try
{
if(!hasFocus)
{
Object service = getSystemService("statusbar");
Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
Method collapse = statusbarManager.getMethod("collapse");
collapse .setAccessible(true);
collapse .invoke(service);
}
}
catch(Exception ex)
{
}
}
答案 5 :(得分:0)
视频播放器通过设置
全屏运行 myView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
setFlags()
之前 setContentView(View)
这将显示任何用户互动的系统栏,就像视频播放器一样。
您可以全屏运行应用程序的最近方法是设置 Lights Out 模式,系统按钮将显示为 dots 。
要使用灯光输出模式,只需使用活动中的任何视图并调用
即可 anyView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
要隐藏导航栏,请在onStart()
中使用此功能,以便每次进入该活动时,它都将处于全屏模式。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
我希望这有帮助!
答案 6 :(得分:0)
Android版:4.2.2 - 设备:Vega Tablet
Android应用程序隐藏状态和系统栏并显示完整的屏幕我按照以下步骤操作。
<强>的AndroidManifest.xml 强>
92
<强> MainActivity.java 强>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
以上代码完全适用于我的应用。
答案 7 :(得分:-2)
转到您的清单并将其添加到您的活动中
<activity
android:name="yourPackage.yourActivity"
android:theme="@android:style/Theme.Black.NoTitleBar">