Android set edit text style глобально в теме не работает

Я столкнулся с проблемой. Я пытаюсь, чтобы редактировать тексты в моем приложении выглядят одинаково с помощью темы.
Я сгенерировал стили с помощью онлайн-инструментов (9-патч-изображений) и попытался установить его в моей теме следующим образом

   <!-- Base application theme. -->
    <style name="DefaultAppTheme" parent="Theme.AppCompat">
        <!-- Main theme colors -->
        <!--   your app branding color for the app bar -->
        <item name="colorPrimary">@color/blue</item>
        <!--   darker variant for the status bar and contextual app bars -->
        <item name="colorPrimaryDark">@color/darkblue</item>
        <!--   theme UI controls like checkboxes and text fields -->
        <item name="colorAccent">@color/cornflowerblue</item>
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="android:editTextStyle">@style/EditTextDefault</item>
    </style>

Мой стиль для редактирования текста

<style name="EditTextDefault" parent="android:Widget.EditText">
        <item name="android:background">@drawable/edit_text_holo_light</item>
        <item name="android:textColor">@color/light_blue</item>
        <item name="android:layout_marginLeft">@dimen/margin_edit_text_default</item>
        <item name="android:layout_marginRight">@dimen/margin_edit_text_default</item>
        <item name="android:layout_marginTop">@dimen/margin_edit_text_default</item>
    </style>

Но это не работает, если вы редактируете текст без указания стиля вручную для каждого текста редактирования.

Это не работает

<EditText
    android:id="@+id/edit_text_login"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/edit_text_password"
    android:hint="@string/hint_enter_login"
    android:inputType="textEmailAddress" />

Это работает

<EditText
    android:id="@+id/edit_text_login"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/edit_text_password"
    style="@style/EditTextDefault"
    android:hint="@string/hint_enter_login"
    android:inputType="textEmailAddress" />

Я знаю, что параметры layout_ * не будут влиять, если они используются в теме, но другие атрибуты должны работать.

Пожалуйста, помогите с этой проблемой.

Ответ 1

вместо этого..

<item name="android:editTextStyle">@style/EditTextDefault</item>

используйте это.

<item name="editTextStyle">@style/EditTextDefault</item>

Ответ 2

Что вы должны делать

Используйте @android:style/Widget.EditText вместо parent="android:Widget.EditText". Я надеюсь, что это вам поможет.

Пожалуйста, прочтите этот ответ Установите согласованный стиль для всего EditText

<style name="EditTextDefault" parent="@android:style/Widget.EditText">

Ответ 3

если вы используете appcompat > v22, вы можете попробовать использовать

<style name="EditText.Colored" parent="Theme.AppCompat">
    <item name="colorControlNormal">@color/colorNormal</item>
    <item name="colorControlActivated">@color/colorActivated</item>
    <item name="colorControlHighlight">@color/colorControlHighlight</item>
</style>

и в вашем макете. xml задайте андроид: тема propertie для edittext

<EditText
    android:id="@+id/edit_text_login"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/edit_text_password"
    android:theme="@style/EditText.Colored"
    android:hint="@string/hint_enter_login"
    android:inputType="textEmailAddress" />

Ответ 4

В дополнение к исправлению ссылки на Widget.EditText:

<style name="EditTextDefault" parent="@android:style/Widget.EditText">

Вам нужно создать "тему" ​​и применить ее в своем манифесте. Вот так:

<application
    ...
    android:theme="@android:style/DefaultAppTheme" >
</application>

Ответ 5

Используйте свой стиль .xml Чтобы получить хорошую тему с курсором lite

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:style/Theme.Holo.Light">
        <!-- Customize your theme here. -->
    </style>

    <style name="NoActionBar" parent="android:style/Theme.Holo.Light.NoActionBar">
        <!-- Customize your theme here. -->
    </style>

    <style name="FullScreen" parent="android:style/Theme.Holo.Light.NoActionBar.Fullscreen">
        <!-- Customize your theme here. -->
    </style>
</resources>

Add this in your Style.xml

If this answer is not satisfied you can edit or ask me for delete