Переопределение editTextStyle не работает с последним базовым стилем компонентов материалов - PullRequest
1 голос
/ 08 мая 2019

В моем приложении я использую Theme.MaterialComponents.Light.NoActionBar в качестве базового стиля. В этом стиле, который я называю AppTheme, я пытаюсь переопределить editTextStyle, чтобы предоставить собственный стиль для com.google.android.material.textfield.TextInputEditText (согласно исходному коду он использует R.attr.editTextStyle в качестве стиля по умолчанию).

Это моя текущая тема, связанная с TIEditText и TILayout:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    [ primary and secondary colors, OnColors, etc.]
    <item name="editTextStyle">@style/AppTheme.TextInputEditText</item>
    <item name="textInputStyle">@style/AppTheme.TextInputLayout</item>

    [ Custom attribute for testing, defined in attrs.xml ]
    <item name="textInputEditTextStyle">@style/AppTheme.TextInputEditText</item>
</style>

По какой-то причине, хотя я установил editTextStyle, если я использую его в коде, он не применяется:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/tilFirstName"
    style="?attr/textInputStyle"
    android:hint="@string/label_firstname"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/firstName"
        style="?attr/editTextStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:text="@={viewModel.firstName}" />
</com.google.android.material.textfield.TextInputLayout>

Однако, если я заменю стиль firstName на ?attr/textInputEditTextStyle, это сработает.

Почему я не могу переопределить editTextStyle в теме по умолчанию? Что, черт возьми, происходит?

Целевой SDK - 28, minSDK - 21, Версия библиотеки материалов - 1.1.0-alpha06

...