Articles of android fullscreen

当软键盘可见但不使用全屏标志时,在android中隐藏状态栏

我需要在该输入下创建包含文本输入(EditText)和一些项目列表(TextView-s)的活动。 状态栏不可见,只有导航栏可见。 用户单击EditText后,需要显示软键盘,但系统UI无法更改(状态栏不可见,导航栏可见)。 用户必须仍然能够滚动到ListView的底部(以便能够看到ListView中的最后一项),而软键盘仍然可见。 问题是我无法实现此行为 – 仅当我使用标志WindowManager.LayoutParams.FLAG_FULLSCREEN时,状态栏才会保持隐藏状态。 但在这种情况下,活动内容不会resize,键盘将覆盖ListView底部的少量TextView-s。 我在这里发现了许多类似的问题,但没有一个描述我的情况(隐形状态栏+可见软键盘+可见活动的所有布局内容)。 似乎键盘显示的时候,android会改变UI的一些标志,所以我之后尝试重置它们,但没有成功 – 请参阅方法“hideStatusBar()”的用法。 这是我的代码: 布局: 活动: public class TestActivity extends Activity { private ListView listView; private ArrayAdapter adapter; private List views = new ArrayList(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test_content); adapter = new ArrayAdapter(this, 0, views) { @Override public View getView(int position, View convertView, […]

Android VideoView全屏,导航栏重叠控件

所以,我知道这已被问过好几次,但是我无法让它工作(而且每个Android版本的答案似乎都有所改变)。 编辑:我正在测试Marshmallow,但是让它在Android 4.1+上运行会很不错。 我想要的只是显示一个全屏video,当用户点击屏幕时,显示导航栏和其他媒体控件/计时器。 就像像VLC和Youtube这样的应用程序已经在做了。 我从Android Studio中的Fullscreen Activity示例开始,所以我的标志是: 全屏时: private final Runnable mHidePart2Runnable = new Runnable() { @SuppressLint(“InlinedApi”) @Override public void run() { // Delayed removal of status and navigation bar // Note that some of these constants are new as of API 16 (Jelly Bean) // and API 19 (KitKat). It is safe to […]

如何完全退出沉浸式全屏模式?

我想实现一个按钮来启用/禁用沉浸式全屏模式。 我正在使用这些方法,但showSystemUI只能快速显示并再次隐藏…… 如何完全退出沉浸式模式? 我的方法: // This snippet hides the system bars. @SuppressLint(“NewApi”) private void hideSystemUI() { try{ // 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 // […]

全屏活动与通知栏和操作栏之间的平滑过渡

背景 我有一个有2个活动的应用程序: 启动活动,以全屏显示(无操作栏,无通知栏) 主活动,包含操作栏(使用actionBarSherlock)和通知栏。 问题 出于某种原因,当从第一个活动转到第二个活动时,有一个“跳跃”的布局过程,它显示没有操作栏和通知栏的第二个活动的内容,片刻之后它会同时显示它们。 这导致下面的内容也移动,这是非常明显的。 可能的方案 正如我所见,一个可能的解决方案是隐藏操作栏并稍后显示(500毫秒后),但这似乎是一个糟糕的解决方案(使它变得更慢并且无缘无故地隐藏),而且我需要得到actionBar项目位置用于其他目的(用于显示教程)。 这个问题 是否有可能避免“跳跃”? 一个不涉及这种奇怪的解决方法?

退出全屏活动时状态栏会闪烁

我注意到在以下情况中发生了一个非常恼人的闪烁:显示全屏活动,然后启动另一个非全屏活动。 在我的应用程序中,我在第二个活动的顶部使用了一个操作栏,我清楚地看到在切换活动时如何完成闪烁。 当状态栏出现时,它不能平稳地推动我的活动,但很快就会出现这种烦人的闪烁。 我可以用一些API来控制这种行为吗? 还是其他一些解决方法?

尝试隐藏标题栏时应用程序崩溃

为了制作全屏幕应用程序,我对新的“空白活动”项目的清单进行了以下更改: android:theme=”@android:style/Theme.NoTitleBar.Fullscreen” 在任何设备上运行时,应用程序崩溃。 我所做的更改已被StackOverflow中的许多post推荐,我无法弄清楚我做错了什么。 清单文件

setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION)不起作用

我一直在与setSystemUiVisibility()斗争,试图隐藏软导航按钮一段时间(对于video播放器)。 它似乎不像宣传的那样工作。 这是我的代码,在可见的FrameLayout 。 void setNavVisibility(boolean visible) { int newVis = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; if (!visible) { newVis |= SYSTEM_UI_FLAG_LOW_PROFILE | SYSTEM_UI_FLAG_HIDE_NAVIGATION; } setSystemUiVisibility(newVis); } 从SDK示例稍加修改: void setNavVisibility(boolean visible) { int newVis = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | SYSTEM_UI_FLAG_LAYOUT_STABLE; if (!visible) { newVis |= SYSTEM_UI_FLAG_LOW_PROFILE | SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION; } 打电话时也不做任何事。 当我从不同的View调用它们时,我取得了一些成功,但文档中没有提到您调用的View是否有任何影响? 我认为文档(惊喜)在这里有点缺乏。 有谁知道真正发生了什么?

使用SystemUiHider保持导航栏隐藏

在旧版本的Android中,有必要在清单中使用: android:theme=”@android:style/Theme.NoTitleBar.Fullscreen”使标题栏消失。 在较新的ADT版本中,我注意到一个SystemUiHider类,它允许您调用它的hide()方法,不仅删除标题栏,还删除操作栏和导航栏。 我正在尝试编写一个全屏应用程序,我希望保持全屏(对于自助服务终端实施),除非按下一个小的隐藏按钮。 我尝试过采用标准的FullscreenActivity(从新的android项目向导生成),并阻止UI以多种方式重新出现: 在mSystemUiHider.hide()调用mSystemUiHider.hide() (在检测到可见性发生变化时尝试立即隐藏UI) 设置: AUTO_HIDE_DELAY_MILLIS = 0 (如果可见则尝试立即隐藏) 阻止调用mSystemUiHider.show(); 在contentView.setOnClickListener的onClick方法内(以防止它被显示) 我还在android.view的文档中看到了setSystemUiVisibility示例(如果显示或可见性更改,再次尝试立即隐藏它) 它们似乎都不起作用(当尝试其中任何一个时,Android默认为导航栏的低配置模式。 我明白他们可能不希望开发人员做我想做的事情,但我希望我可以扩展SystemUiHider (和/或SystemUiHiderBase )并覆盖show()方法基本上不显示,除非传递了一个true标志。 我似乎无法在这些类中find任何文档(也许是因为它们是实用程序类?)。

导航抽屉的NavigationView上仍然存在重叠的阴影效果

我已经改进了Android Studio的Navigation Drawer Activity项目模板,该模板使用Toolbar , v7.app.ActionBarDrawerToggle和NavigationView而不是NavigationDrawerFragment(以及layout / fragment_navigation_drawer.xml)。 它完美地工作。 然后,我走得更远。 我的导航抽屉项目处于沉浸式粘性 (全屏)模式。 @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { View decorationView = getWindow().getDecorView(); decorationView.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 | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); } } @Override protected void onCreate(Bundle savedInstanceState) { … toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); ActionBar actionBar = […]

从沉浸式模式返回时,操作栏显示不正确

我在ActionBarActivity从沉浸模式返回了一些问题。 我创建了一个简单的应用来说明这个问题。 有一个布局,只需一个按钮即可切换沉浸式模式。 当从沉浸式模式“返回”时,操作栏从其原始位置向下偏移,大致相同的距离,通常偏离屏幕顶部。 我在运行Lollipop的Nexus 4上尝试过这个。 这种行为在Lollipop之前没有发生。 之前的屏幕截图, 沉浸式 , 之后 。 一个简单的ActionBarActivity ,说明了这个问题: public class MainActivity extends ActionBarActivity { private boolean immersed; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @TargetApi(Build.VERSION_CODES.KITKAT) private void enterImmersiveMode() { if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { getWindow().getDecorView().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 | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY ); immersed […]