Почему по-умолчанию в теме MaterialComponents.PrimarySurface для виджетов цвет MenuItem в Toolbar не реагирует на состояние enabled?
В своём приложении я использую тему, унаследованную от Theme.MaterialComponents.DayNight.
У меня есть Toolbar, лежащий внутри AppBarLayout — для обоих в качестве стиля установлены их Widget.MaterialComponents.*.PrimarySurface. В коде моей Activity я вызываю setSupportActionBar(), и навешиваю моё меню при помощи onCreateOptionsMenu(). В меню есть ровно один элемент, для которого по-умолчанию установлен enabled=false, и на отдельном рендере меню он затемнён, как и подобает его состоянию. Но если добавить его на рендер моей Activity, да и при запуске на устройстве, этот элемент при любом состоянии выглядит так, будто enabled=true.
На данный момент, никакой панацеи, кроме кастомного селектора, я не нашёл. Существует ли возможность через разметку темы исправить это, не прибегая к использованию кастомного селектора или ручного указания прозрачности в коде? И самое главное — почему это работает так, как работает сейчас? В AppCompat темах с этим не возникает проблем, но я не могу их использовать, поскольку мне необходима ExtendedFloatingActionButton.
Стили
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar.Bridge">
<item name="colorPrimaryDark">?attr/colorSurface</item>
<item name="windowActionModeOverlay">true</item>
<item name="android:windowTranslucentNavigation">true</item>
<item name="actionModeBackground">?attr/colorPrimary</item>
</style>
<style name="AppTheme.DeepCyan" parent="AppTheme">
<item name="colorPrimary">@color/cyan_900</item>
<item name="colorPrimaryVariant">@color/cyan_900_light</item>
<item name="colorPrimaryDark">@color/cyan_900_dark</item>
<item name="colorOnPrimary">@color/white_900</item>
<item name="colorSecondary">@color/red_A200</item>
<item name="colorSecondaryVariant">@color/red_A200_light</item>
<item name="colorOnSecondary">@color/black_900</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.MaterialComponents.ActionBar">
<item name="android:textColorPrimary">?attr/colorOnPrimary</item>
</style>
</resources>
Цвета (для полноценного воспроизведения)
<resources>
<color name="black_900">#000000</color>
<color name="cyan_900">#006064</color>
<color name="cyan_900_light">#428e92</color>
<color name="cyan_900_dark">#00363a</color>
<color name="red_A200">#ff5252</color>
<color name="red_A200_light">#ff867f</color>
<color name="red_A200_dark">#c50e29</color>
<color name="white_900">#ffffff</color>
</resources>
Разметка меню
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/confirm_setup_action"
android:enabled="false"
android:icon="@drawable/ic_check_mark"
android:title="@string/action_confirm_creation_title"
android:visible="true"
app:showAsAction="always" />
</menu>
Разметка Activity
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.appbar.AppBarLayout
style="@style/Widget.MaterialComponents.AppBarLayout.PrimarySurface"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay"
app:elevation="0dp">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
style="@style/Widget.MaterialComponents.Toolbar.PrimarySurface"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.DayNight"
app:menu="@menu/menu_setup_fragments"/>
</com.google.android.material.appbar.AppBarLayout>
</LinearLayout>
Код Activity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_setup_fragments, menu);
return super.onCreateOptionsMenu(menu);
}
}

