Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中只显示状态栏?_Android_Android Statusbar - Fatal编程技术网

在android中只显示状态栏?

在android中只显示状态栏?,android,android-statusbar,Android,Android Statusbar,我希望该应用程序仅显示状态栏,并将导航栏设置为沉浸式模式。尝试了很多东西,但不知何故导航栏保持不变,状态栏被隐藏。材料主题会与全屏功能混淆吗 尝试了与同一问题相关的其他问题,但他们以黑客的形式解决了问题,而且解决方案的API版本较旧。以下是我的主题属性和相关设置代码: false 真的 @空的``` 1)通过代码,您可以使用下面的方式隐藏操作栏。 class MyActivity : AppCompatActivity() { override fun onCreate(savedInstan

我希望该应用程序仅显示状态栏,并将导航栏设置为沉浸式模式。尝试了很多东西,但不知何故导航栏保持不变,状态栏被隐藏。材料主题会与全屏功能混淆吗

尝试了与同一问题相关的其他问题,但他们以黑客的形式解决了问题,而且解决方案的API版本较旧。以下是我的主题属性和相关设置代码:

false
真的
@空的```
1)通过代码,您可以使用下面的方式隐藏操作栏。

class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)
    supportActionBar?.hide()
  }
}
此行
supportActionBar?.hide()
hide action bar only。请参阅所附图像

2)通过主题为的XML

首先,在styles.xml中添加样式:

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>

假的
真的

并将其应用于要隐藏操作栏的活动

<activity
android:name=".MyActivity"
android:theme="@style/AppTheme.NoActionBar"/>

根据此处,您需要使用以隐藏底部导航栏。它们还传递
SYSTEM\u UI\u FLAG\u全屏
标志,因为当导航栏被隐藏时,最好也隐藏状态栏

View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
如果我正确解释了这个问题,您的要求不是隐藏状态栏,而是隐藏导航栏。因此,您不应该在任何地方传递全屏标志。从上面的代码片段中删除它,并从主题中删除
android:windowFullscreen
。这将使状态栏像往常一样出现

因此,您实际的
ui选项将是

int uiOptions = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;

注意:如文档中所述,IMMERSIVE_Stick仅确保导航栏区域中的任何触摸事件/手势也传输到应用程序。如果用户在那里滑动,它仍然会显示一个半透明的导航条。如中所述,如果没有某种形式的根访问,则不可能完全删除它



Edit:我最初使用
AppCompatActivity
和默认的
Theme.AppCompat.Light.NoActionBar
主题对其进行了测试。还使用OP的
android:Theme.Material.Light.NoActionBar
(需要使用
活动
,而不是
AppCompatActivity
)进行了测试。两者都起作用。

windowFullscreen
隐藏状态栏,而
NoActionBar
主题应该隐藏系统操作栏,即使没有明确的
windowActionBar=false
。您是否可以检查布局是否添加了自定义工具栏作为操作栏?尝试获取supportActionBar时,结果为空。当您说“导航栏”时,您是指在上生成的系统,该系统显示在底部,具有“返回”、“主页”和“最近”等操作?我把它误读为导航抽屉,所以我把注意力集中在操作栏上(上面的那个,就在状态栏下面)。是的。下面的一个我想显示状态栏并隐藏导航栏。您的代码隐藏了操作栏。与问题无关。第二种方法对Metats good@NoorHossainI有效。我假设你的API级别肯定高于Android 4.1,因为那是很久以前的事了。试过了。但它不起作用。我的意思是,如果我使用全屏标志,它会进入沉浸式模式,但没有它,导航栏是可见的。是的,我不想永久隐藏它。基本上,我想要身临其境的行为,但显示状态栏。你能提到你的最小API级别吗?因为我用它制作了一个演示应用程序,它可以按照你的要求工作。像导航栏一样身临其境,始终可见状态栏。试着自己制作一个新的应用程序,看看它是否有效?这可能意味着你当前应用程序中的其他东西正在搞乱它。在新应用程序中使用材质主题和扩展碎片活动都很好。我想我把事情搞砸了。
int uiOptions = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;