Компоненты материала по умолчанию имеют значение colorAccent вместо colorPrimary.

Мой AppTheme в styles.xml выглядит так:

   <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textColorPrimary">@color/textColorPrimary</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowTranslucentNavigation">true</item>
    </style>

Я установил это в манифесте как:

<application
    android:name=".MyApp"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    tools:ignore="GoogleAppIndexingWarning">

Согласно https://material.io/develop/android/components/ Цвет по умолчанию примененный к моим виджетам, должен быть заданным colorPrimary, но мой выбирает colorAccent как цвет по умолчанию. Например, эта кнопка:

<com.google.android.material.button.MaterialButton
        android:id="@+id/loginButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="56dp"
        android:layout_marginEnd="56dp"
        android:text="login"
        app:cornerRadius="5dp"
        app:elevation="0dp"
        app:fontFamily="@font/gotham_bold" />

Наблюдаемое поведение

Ожидаемое поведение

Мне не хватает определенной конфигурации для этого проекта, чтобы кнопка отображала colorPrimary, а не colorAccent?


person Adhiambo Oyier    schedule 26.01.2020    source источник
comment
Используйте версию 1.1.0 (в настоящее время -rc02)   -  person Gabriele Mariotti    schedule 27.01.2020
comment
Это помогло, спасибо. Я только что обновился до последней версии материала, предложенной IDE, и поведение исправилось.   -  person Adhiambo Oyier    schedule 27.01.2020


Ответы (2)


Используйте библиотеку компонентов материалов 1.1.0 или более позднюю.

Стиль MaterialButton по умолчанию:

    <style name="Widget.MaterialComponents.Button" parent="Widget.AppCompat.Button">
        <item name="backgroundTint">@color/mtrl_btn_bg_color_selector</item>
        <!-- .... -->
    </style>

Начиная с версии 1.1.0 @color/mtrl_btn_bg_color_selector основан на ?attr/colorPrimary:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="?attr/colorPrimary" android:state_enabled="true"/>
  <item android:alpha="0.12" android:color="?attr/colorOnSurface"/>
</selector>

В версии 1.0.0 селектор был основан на ?attr/colorAccent:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="?attr/colorAccent" android:state_enabled="true"/>
  <item android:color="@color/mtrl_btn_bg_color_disabled"/>
</selector>
person Gabriele Mariotti    schedule 27.01.2020

в этом случае я считаю, что изменился только цвет текста на вашей кнопке, он имеет значение цвета textColorPrimary. Есть вероятность, что textColorPrimary и colorAccent совпадают

person ArdritK    schedule 26.01.2020
comment
Привет, может я не ясно выразился. Атрибуты и значения установлены правильно. Только цвет фона не вел себя так, как ожидалось. Я ожидал, что фон кнопки будет синим, как colorPrimay, но он был желтым, как colorAccent - person Adhiambo Oyier; 27.01.2020