在少数活动中显示操作栏

Display action bar in few activities

我创建了一个没有操作栏的自定义主题样式:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

在我的清单中我使用了这种风格:

<application
    android:largeHeap="true"
    android:name="androidx.multidex.MultiDexApplication"
    android:allowBackup="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

这样我的所有活动都没有操作栏。但是我希望它只出现在某些活动中。我尝试添加代码:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    val layoutInflater: LayoutInflater = LayoutInflater.from(this)
    val view: View = layoutInflater.inflate(R.layout.activity_edit_profile, null)

    setContentView(view)
    supportActionBar?.show()

但是没有显示操作栏,我认为原因是主题不支持操作栏。我只想在少数活动中显示操作栏,即便如此,我是否应该创建一个带有操作栏的主题并在大多数活动中以编程方式隐藏它?

使用操作栏创建样式

<!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

    </style>

然后创建另一种没有操作栏的样式

<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

然后像这样使用

带有操作栏的活动

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

没有操作栏的活动

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

ActionBar

创建主题
<style name="AppActionBarTheme" parent="Theme.AppCompat.Light">

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

</style>

您已经有了没有操作栏的主题 AppTheme

将此主题添加到 Manifest 文件中的 Activity,就像这样

对于 NoActionBar

  <activity android:name=".NoActionBarActivity"
        android:theme="@style/AppTheme"
        android:label="NoActionBarActivity"></activity>

对于动作条

  <activity android:name=".ActionBarActivity"
        android:theme="@style/AppActionBarTheme"
        android:label="ActionBarActivity"></activity>

对于整个应用程序。只需在应用程序标签中添加 android:theme="@style/AppTheme" 行。就像这样

  <application
        android:theme="@style/AppTheme"/>

或者hide/show ActionBar 编程方式就像这样

  //to show ActionBar
  supportActionBar?.show()

 //to hide ActionBar
  supportActionBar?.hide()