Установите согласованный стиль для всего EditText (например,)
Я пытаюсь сделать все EditText
в моем приложении устойчивым. Я знаю, что могу сделать что-то вроде этого:
<style name="App_EditTextStyle">
<item name="android:background">@drawable/filled_roundededges_box_dark</item>
<item name="android:textColor">#808080</item>
<item name="android:layout_height">45dip</item>
</style>
Тогда я могу сделать конкретный EditText
этот стиль, выполнив следующее:
<EditText ...
style="@style/App_EditTextStyle
...>
Но таким образом я должен помнить, чтобы индивидуально установить стиль для каждого EditText
в моем приложении, который является утомительным, если не подвержен ошибкам.
Есть ли способ сделать это частью темы или чего-то еще? Это значит, что мне не нужно связывать этот стиль с каждым EditText
. Что-то вроде этого фиктивного блока кода:
<style name="App_Theme" parent="@android:style/Theme.Holo">
...
<item name="android:EditTextSyle">@style/App_EditTextStyle</item>
...
<style>
И затем в моем AndroidManifest.xml
у меня есть что-то вроде:
<application
....
android:theme="@style/App_Theme">
И Вуаля! все мои EditText
имеют согласованный стиль без необходимости указывать стиль для каждого экземпляра.
Ответы
Ответ 1
Отмените атрибут, указывающий на стиль EditText
(с именем editTextStyle
:)) в пользовательской теме:
<style name="App_Theme" parent="@android:style/Theme.Holo">
<item name="android:editTextStyle">@style/App_EditTextStyle</item>
</style>
и добавьте свой собственный стиль Widget.EditText
:
<style name="App_EditTextStyle" parent="@android:style/Widget.EditText">
<item name="android:background">@drawable/filled_roundededges_box_dark</item>
<item name="android:textColor">#808080</item>
<item name="android:layout_height">45dip</item>
</style>
Ответ 2
@Luksprog ответ правильный, но не работает для меня. После некоторых экспериментов я узнал, что удаление пространства имен android из editTextStyle заставило его работать для меня.
<style name="App_Theme" parent="@android:style/Theme.Holo">
<item name="editTextStyle">@style/App_EditTextStyle</item>
</style>
и создайте свой собственный стиль для расширения Widget.EditText
или при использовании темы AppCompat Widget.AppCompat.EditText
:
<style name="App_EditTextStyle" parent="@android:style/Widget.EditText">
<item name="android:background">@drawable/filled_roundededges_box_dark</item>
<item name="android:textColor">#808080</item>
<item name="android:layout_height">45dip</item>
</style>
Ответ 3
Сначала определите стиль для вашего EditText. Убедитесь, что родительский стиль android:Widget.EditText
<style name="CustomEditTextStyle" parent="android:Widget.EditText">
<item name="android:textColor">#0F0F0F</item>
<!-- ... More items here if needed ... -->
</style>
После этого переопределите атрибут android:editTextStyle
в пользовательской теме. Помните, что если вы используете библиотеку поддержки, вам также необходимо переопределить атрибут editTextStyle
(без пространства имен android).
<style name="App_Theme" parent="...">
<item name="android:editTextStyle">@style/CustomEditTextStyle</item>
<item name="editTextStyle">@style/CustomEditTextStyle</item> <!-- For compatibility with the support library -->
</style>
Ответ 4
<style name="App_Theme" parent="@android:style/Theme.Holo">
<item name="android:editTextBackground">@drawable/filled_roundededges_box_dark</item>
</style>