У нас есть фирменное приложение с множеством разных вкусов, и недавно мы перешли на компоненты Material. С тех пор внезапно все TextInputLayouts имеют этот уродливый серый фон
Я прочитал документацию Google в https://material.io/develop/android/components/text-input-layout/ и нашел boxBackgroundColor
, который работает нормально, когда используется непосредственно в макете xml, например:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/edit_gsm_groupname_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
** app:boxBackgroundColor="?attr/theme_backColor" **
android:layout_alignBottom="@+id/edit_gsm_icon"
android:layout_toEndOf="@+id/edit_gsm_icon">
Из-за размера приложения и количества используемых полей ввода, он на самом деле не является жизнеспособным возможность поместить эту строку в каждый макет, который у нас есть.
Итак, я попытался решить ее с помощью стилей, у нас уже есть десятки активных.
Я пытался в AlertTheme и AppTheme, например так:
<style name="baseAppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
... lots of settings...
<!--Custom animations-->
<item name="colorPrimaryDark">?attr/theme_branding_01</item>
<item name="colorPrimary">?attr/theme_branding_02</item>
<item name="colorPrimaryLight">?attr/theme_branding_05</item>
<item name="colorAccent">?attr/theme_branding_03</item>
<!--Control coloring-->
<item name="android:colorBackground">?attr/theme_branding_14</item>
<item name="android:colorForeground">?attr/theme_branding_11</item>
<item name="colorControlNormal">?attr/theme_branding_11</item>
<item name="colorControlActivated">?attr/colorAccent</item>
<item name="android:textColor">@color/base_active_inactive_text_colors</item>
<item name="android:editTextColor">?attr/theme_branding_11</item>
<item name="android:textColorHint">?attr/colorAccent</item>
** <item name="boxBackgroundColor">?attr/theme_branding_14</item> **
<!--System properties-->
<item name="android:windowBackground">?attr/theme_branding_14</item>
<item name="android:textColorPrimary">?attr/theme_branding_14</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">?attr/colorPrimaryDark</item>
<item name="materialAlertDialogTheme">@style/baseAlertDialogTheme</item>
</style>
<style name="baseAlertDialogTheme" parent="Theme.MaterialComponents.Light.Dialog.Alert">
<!--Control coloring-->
<item name="android:windowBackground">?attr/theme_branding_14</item>
<item name="android:colorBackground">?attr/theme_branding_14</item>
<item name="android:colorForeground">?attr/theme_branding_11</item>
<item name="colorControlNormal">?attr/theme_branding_11</item>
<item name="colorControlActivated">?attr/colorAccent</item>
<item name="android:textColor">?attr/theme_branding_11</item>
<item name="android:editTextColor">?attr/theme_branding_11</item>
<item name="android:textColorHint">?attr/colorAccent</item>
** <item name="boxBackgroundColor">?attr/theme_branding_14</item> **
<!--Alert dialog colors-->
<item name="android:textColorPrimary">?attr/theme_branding_11</item>
<item name="android:background">?attr/theme_branding_14</item>
<!--Alert button colors-->
... button styles ...
<item name="android:buttonBarPositiveButtonStyle">@style/baseAlertDialogButton</item>
</style>
Но почему-то boxBackgroundColor
, кажется, не действует при установке через стили. Я нашел этот вопрос Материалы Стили TextInputLayout не работают , где сказано, что это не работает в режиме предварительного просмотра, но я попытался передать sh на устройства - это не работает во время выполнения либо.
Решение для этого было бы замечательно - Как я могу избавиться от этого серого фона? Он должен иметь нормальный цвет фона, как это было со старым TextInputLayout.
Заранее спасибо, ура, Гри