在我的一个应用程序中,我将Theme.MaterialComponents.Light.NoActionBar用作基本样式。 在这种样式下,我称为AppTheme ,我试图覆盖editTextStyle来为com.google.android.material.textfield.TextInputEditText提供自定义样式(根据源代码,它使用R.attr.editTextStyle作为默认R.attr.editTextStyle风格)。
这是我当前的主题,与TIEditText和TILayout有关:
[ primary and secondary colors, OnColors, etc.]
@style/AppTheme.TextInputEditText
@style/AppTheme.TextInputLayout
[ Custom attribute for testing, defined in attrs.xml ]
@style/AppTheme.TextInputEditText
由于某些原因,即使我设置了editTextStyle ,如果我在代码中使用它,也无法应用:
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">
android:id="@+id/firstName"
style="?attr/editTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:text="@={viewModel.firstName}" />
但是,如果我用?attr/textInputEditTextStyle替换firstName的样式,它将起作用。
为什么不能在默认主题中覆盖editTextStyle ? 这到底是怎么回事?
目标SDK是28,minSDK是21,材料库版本是1.1.0-alpha06