2015-04-25 9 views
5

To jest dość podstawowe pytanie - używam wersji API 11+ i chcę korzystać z funkcjonalności na telefonach z nowszą wersją interfejsu API. Byłoby jednak miło, gdybym nie musiał ponownie definiować mojego stylu. Tak więc, na przykład, jeśli w wartości/styles.xml mam:Jak dziedziczyć styl określony w innej wersji interfejsu API

<resources 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <style name="Theme.MyApp.Input.Text"> 
    <item name="android:layout_width">match_parent<item> 
    <item name="android:layout_height>wrap_content</item> 
    </style> 
</resources> 

a potem w wartościach V14/styles.xml mam:

<resources 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <style name="Theme.MyApp.Input.Text"> 
    <item name="android:textAllCaps">true</item> 
    </style> 
</resources> 

Następnie na urządzenia, które mają API 14+, otrzymam połączenie dwóch stylów.

Odpowiedz

2

Pytanie jest dość stary, ale jest to możliwe: Poniższy fragment pochodzi z wartościami/styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <item name="colorPrimary">@color/green</item> 
     <item name="colorPrimaryDark">@color/dark</item> 
     <item name="colorAccent">@color/green</item> 
     <item name="checkboxStyle">@style/AppTheme.CheckBox</item> 
    </style> 

Jeśli chcesz dziedziczyć (dla np) ten sam styl i specjalizują się w API> = 23 należy zdefiniować wartości/style-23.xml jak poniżej:

<style name="AppTheme.AppTheme23" > 
    <item name="android:windowLightStatusBar">true</item> 
</style> 

Oczywiście w AndroidManifest.xml motywu, aby określić to:

android:theme="@style/AppTheme" 

To wszystko ludzie!

Powiązane problemy