Показать панель действий в нескольких действиях - PullRequest
2 голосов
/ 11 января 2020

Я создал собственный стиль темы без панели действий:

<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()

Но панель действий не отображается, и я предполагаю, что причина в том, что тема не поддерживает панель действий. Я хотел бы отображать панель действий только в нескольких действиях, даже если мне нужно создать тему с панелью действий и скрыть ее программно в большинстве действий?

Ответы [ 2 ]

1 голос
/ 11 января 2020

Создать тему для With 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, как это

Для NoActionBar

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

Для ActionBar

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

Для всего приложения. Просто добавьте android:theme="@style/AppTheme" строку в тег приложения. Просто вот так

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

Или скрыть / показать ActionBar программно, как это

  //to show ActionBar
  supportActionBar?.show()

 //to hide ActionBar
  supportActionBar?.hide()
1 голос
/ 11 января 2020

Создайте стиль с помощью панели действий

<!-- 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>

, а затем используйте такие действия

с действием bar

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

действия без действия action bar

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