2014-12-22 6 views
10

Dopo aver aggiornato la libreria appcompat alla versione più recente (v21) per applicare il design del materiale, il mio tema personalizzato non viene più utilizzato su dispositivi Android 4.0.X a meno che non dichiararlo esplicitamente nell'XML.Tema non applicato utilizzando la libreria appcompat su alcuni dispositivi Android 4.X

Ho testato il tema su dispositivi Android 2.3.X e 5.0.0 e funziona su tali dispositivi. Ma non funziona sul mio HTC One S con Android 4.0.3. Cosa devo fare per risolvere questo problema?

mio 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> 

mio 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> 

mio file di layout

<?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> 

Se posso aggiungere quanto segue per le linee del layout file funziona. Quindi sembra che ci sia qualcosa che non va con themes.xml.

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

Risultato:

Result

atteso:

Expected

Modifica

ho provato lo stesso codice su alcuni altri dispositivi.

  • Samsung S2 (4.0.4): OK
  • HTC One (4.4.3): OK
  • HTC One X (4.0.3): NOK
  • HTC One S (4.1.1): NOK
  • HTC Desire C (4.0.3): NOK

non vedo il motivo per cui non avrebbe funzionato su alcuni di questi dispositivi.

risposta

0

Finalmente ho trovato una soluzione al mio problema. Stavo usando @style/Theme.AppCompat come genitore di uno dei miei stili. Dopo averlo modificato su @style/Theme.AppCompat.Light.DarkActionBar, funziona su tutti i dispositivi. Trovo ancora molto strano il motivo per cui questo potrebbe rovinare il mio stile.

+0

https://code.google.com/p/android/issues/detail?id=78819 – ADK

4

I dopo aggiungere buttonStyle senza il prefisso "android:" e ha risolto il problema. (name = "android: ButtonStyle" -> name = "ButtonStyle")

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="buttonStyle">@style/SkinedButton</item> 
</style> 
+0

risolto un problema per me . GRAZIE! – Sly