1

我想知道是否有一个很好的模式/方法来隐藏启动/加载屏幕的操作栏?我知道这种模式不是很好,但我们正在改造一个使用这种模式的现有应用程序。无论如何,对于对话框或全屏片段等您可能不一定希望显示操作栏的事情,这似乎是一件常见的事情。

我知道它可以用类似的东西相当简单地完成

 override fun onResume() {
        super.onResume()
        activity?.findViewById<Toolbar>(R.id.toolbar)?.visibility = GONE
    }

    override fun onPause() {
        super.onPause()
        activity?.findViewById<Toolbar>(R.id.toolbar)?.visibility = VISIBLE
    }

但我只是好奇是否有更好的方法来使用 NavOptions 或类似的东西来控制操作栏。

4

4 回答 4

2

将启动屏幕活动的样式设置为

Theme.MaterialComponents.DayNight.NoActionBar

或者类似NoActionBar的风格

于 2020-07-15T18:17:25.780 回答
1

您可以使用addOnDestinationChangedListener.
就像是:

navController.addOnDestinationChangedListener { _, destination, _ ->
   if(destination.id == R.id.splash_screen) {
       toolbar.visibility = View.GONE
   } else {
       toolbar.visibility = View.VISIBLE
   }
}

作为替代方案,您可以使用不同的东西。不要将 aFragment用于加载屏幕。
仅为加载屏幕定义应用主题:

<style name="LoadingTheme" parent="Theme.MaterialComponents.NoActionBar">
    <item name="android:windowBackground">@drawable/loading_background</item>
</style>

Manifest将此主题应用于您的MainActivity

<activity android:name=".MainActivity"
              android:theme="@style/LoadingTheme">

最后在你的MainActivity

override fun onCreate(savedInstanceState: Bundle?) {
    setTheme(R.style.AppTheme_NoActionBar)
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    //.....
于 2020-07-15T18:41:36.553 回答
0

1)内部片段使用,

@Override
    public void onResume() {
        super.onResume();
        ((AppCompatActivity)getActivity()).getSupportActionBar().hide();
    }

@Override
public void onStop() {
    super.onStop();
    ((AppCompatActivity)getActivity()).getSupportActionBar().show();
}

2.在Activity使用中,

getSupportActionBar().hide();

或者通过在styles.xml中创建新样式

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

并在manifest.xml的活动中使用样式

<activity ...
      android:theme="@style/AppTheme.NoActionBar" > ...
</activity> 
于 2020-07-15T18:55:47.097 回答
0
ActionBar actionBar = getActionBar();
actionBar.hide();

或者您可以直接在 Manifest 中更改它

<activity 
    android:name=".AnActivity"
    android:label="@string/a_string"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen>
</activity>
于 2020-07-15T18:17:34.873 回答