Я хочу применить собственный стиль к TextInputLayout's
hint
и error
в одной теме и применить его глобально, то есть определить его в styles.xml и каким-то образом применить его ко всем TextInputLayouts
, используемым во всем приложении, без необходимости чтобы добавить его инлайн так:Android | Измените тему TextInputLayout с помощью styles.xml
<android.support.design.widget.TextInputLayout
android:id="@+id/usernameWrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/email_username"
android:textColorHint="@color/grey_text"
app:theme="@style/my_custom_style">
<style name="my_custom_style" parent="Widget.Design.TextInputLayout">
<item name="android:textColorHint">@color/success_accent</item>
<item name="android:textSize">20sp</item>
</style>
Нечто подобное мы можем сделать Button
виджет как это:
styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="buttonStyle">@style/my.Widget.Button</item>
<item name="android:buttonStyle">@style/my.Widget.Button</item>
</style>
<style name="my.Widget.Button" parent="@android:style/Widget.TextView">
<item name="android:gravity">center</item>
<item name="android:textSize">@dimen/some_dimen</item>
<item name="android:textAllCaps">false</item>
</style>
ПРИМЕЧАНИЕ: Я в настоящее время рассматривает подклассов TextInputLayout
в крайнем случае, поэтому, пожалуйста, имейте это в виду, когда вы отвечаете.
Спасибо :)
'android: textColorHint' является атрибутом стиля, а не атрибутом темы, поэтому его нельзя определить в теме. Вы имели в виду использовать атрибут темы «android: textAppearance»? Обратите внимание, что это тоже не сработает, потому что 'TextInputLayout' на самом деле является классом-оболочкой, который расширяет' LinearLayout' вместо 'EditText', и он предоставляет собственный механизм рисования подсказок, который не учитывает внешний вид текста по умолчанию. – corsair992