Я пытаюсь сделать все 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
имеют последовательный стиль, и мне не нужно указывать стиль для каждого экземпляра.
layout_height/height
их нельзя вставить, потому что Android, вероятно, проверяет эти атрибуты перед стилями темы и будет жаловаться на их отсутствие. Но настраиваемый рисунок + другой цвет текста работает с указанным выше.edittextStyle
не относится кAutoCompleTextView
(хотя этоEditText
). Посмотрите наautoCompleteTextViewStyle
атрибут в theme.xml, который указывает наWidget.AutoCompleTextView
стиль в файле style.xml.<item name="android:editTextStyle">
на<item name="editTextStyle">
, все в порядке. Благодаря!@Luksprog ответ правильный, но не работает для меня. После некоторых экспериментов я обнаружил, что удаление пространства имен android из editTextStyle помогло мне.
<style name="App_Theme" parent="@android:style/Theme.Holo"> <item name="editTextStyle">@style/App_EditTextStyle</item> </style>
и сделайте свой собственный стиль расширяемым
Widget.EditText
или, если вы используете тему AppCompatWidget.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>
источник
AppCompat
библиотекой. Ваша деятельность расширяетсяAppCompatActivity
? О, загадки разработки под Android.AppCompat v7:21+
момента стандартные атрибуты темы необходимо использовать без префикса «android:» в стилях.Сначала определите стиль для вашего 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>
источник
Если вам просто нужно установить несколько простых параметров, например цвет текста, пространство имен Android имеет несколько параметров, которые сделают это без необходимости объявлять отдельный стиль для текста редактирования. Например
<style name="MyStyle" parent="android:Theme.Material.NoActionBar"> <item name="colorPrimary">@color/black</item> <item name="colorPrimaryDark">@color/white</item> <item name="colorAccent">@color/white</item> <item name="android:textColor">@color/black</item> <item name="android:editTextColor">@color/black</item> <item name="android:editTextBackground">@color/black</item> .... </style>
источник
editTextColor
и удалитеandroid:
.<style name="App_Theme" parent="@android:style/Theme.Holo"> <item name="android:editTextBackground">@drawable/filled_roundededges_box_dark</item> </style>
источник