Theme wird bei einigen Android 4.X-Geräten nicht mit der AppCompat-Bibliothek angewendet.

Nach dem Aktualisieren der appcompat-Bibliothek auf die neueste Version (v21), um das Materialdesign anzuwenden, wird mein benutzerdefiniertes Design auf Android 4.0.X-Geräten nicht mehr verwendet, es sei denn, ich deklariere es ausdrücklich in XML.

Ich habe das Thema auf Android 2.3.X- und 5.0.0-Geräten getestet und es funktioniert auf diesen Geräten. Aber es funktioniert nicht auf meinem HTC One S mit Android 4.0.3. Was muss ich tun, um dies zu beheben?

Meine themes.xml

<style name="Theme.Custom" parent="@style/Theme.AppCompat.Light">
    <item name="android:editTextStyle">@style/Custom.Widget.EditText</item>
    <item name="android:buttonStyle">@style/Custom.Widget.Button</item>
</style>

Meine styles.xml

<style name="Custom.Widget.EditText" parent="android:Widget.EditText">
    <item name="android:background">@drawable/edit_text_holo_light</item>
    <item name="android:textColor">@color/text_primary</item>
    <item name="android:textColorHint">@color/text_hint_color</item>
</style>

<style name="Custom.Widget.Button" parent="android:Widget.Button">
    <item name="android:background">@drawable/btn_default_holo_light</item>
    <item name="android:minHeight">48dip</item>
    <item name="android:minWidth">64dip</item>
    <item name="android:textColor">@color/button_text_primary</item>
</style>

Meine Layoutdatei

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal" >

    <!-- other elements -->

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:paddingLeft="16dp"
        android:paddingRight="16dp" >

        <EditText
            android:id="@+id/view_username_edit_username_editText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textNoSuggestions|textCapSentences"
            android:hint="@string/UsernameScreen_usernameHint"
            android:imeOptions="actionDone"
            android:singleLine="true"
            android:maxLength="@integer/username_max_length"
            android:textSize="@dimen/text_size_medium" />

        <Button
            android:id="@+id/view_username_save_Button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/view_username_edit_username_editText"
            android:clickable="true"
            android:enabled="false"
            android:orientation="horizontal"
            android:text="@string/common_save" />
    </RelativeLayout>

</RelativeLayout>

Wenn ich den Zeilen in den Layoutdateien Folgendes hinzufüge, funktioniert es. Es scheint also ein Problem mit der themes.xml zu geben.

style="@style/Custom.Widget.EditText"
style="@style/Custom.Widget.Button"

Ergebnis

Erwartet

Bearbeite

Ich habe den gleichen Code auf einigen anderen Geräten getestet.

Samsung S2 (4.0.4): OKHTC One (4.4.3): OKHTC One X (4.0.3): NOKHTC One S (4.1.1): NOKHTC Desire C (4.0.3): NOK

Ich verstehe nicht, warum es auf einigen dieser Geräte nicht funktioniert.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage