2012-12-26 13 views
6

Ich kann nicht verstehen, was mit AppBaseTheme in Android passiert. der folgende CodeWas macht das AppBaseTheme in Android-Apps

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

<style name="mycolor"> 
    <item name="android:background">@layout/header_gradient</item> 
    <item name="android:padding">5dip</item> 
</style> 
<style name="myParentTheme" parent="android:Theme.Light"> 
    <item name="android:attr/windowTitleSize">40dip</item> 
    <item name="android:attr/windowTitleBackgroundStyle">@style/mycolor</item> 
</style> 


<!-- Application theme. --> 
<style name="AppTheme" parent="AppBaseTheme"> 
</style> 

In AndroidManifest.xml In styles.xml habe ich, wenn ich Android verwenden: theme = "@ style/myParentTheme" die Farbe und die Größe des Titels, was gesetzt I möchte einstellen. Der Stil für Textfelder ändert sich jedoch in die alten regulären Textfelder. Wenn ich Android verwende: theme = "@ style/AppTheme" sieht die Benutzeroberfläche sehr "Android-ähnlich" aus, aber meine spezifischen Einstellungen für den Titel haben keine Auswirkungen. Durch das Entfernen von parent = "AppBaseTheme" verhält sich der AppTheme-Stil genau wie der myParentTheme-Stil.

Warum sehe ich nicht alle R.attr-Elemente, wenn ich Strg + Leertaste drücke, während ich das name-Attribut des Style-Tags eintippe?

Bitte helfen. Vielen Dank.

+0

Etwas, das sogar seltsam ist, ist, dass ich keinen Fehler für das AppBaseTheme bekomme, das nicht definiert wird. Es muss ein vordefiniertes Thema sein. Wo lese ich darüber? –

Antwort

15

Wenn Sie eine Aktivität mithilfe des Eclipse-Assistenten für neue Projekte erstellen, definiert Eclipse AppTheme und AppBaseTheme Ressourcen für Sie. AppBaseTheme hat typischerweise drei Definitionen, in res/values/, res/values-v11/ und res/values-v14/. AppTheme erbt von AppBaseTheme.

Die Absicht ist, dass Sie die meisten Ihrer App-spezifischen Stilinformationen in AppTheme einfügen, anstatt Ihr eigenes Thema zu erfinden (z. B. myParentTheme). AppBaseTheme würde meist sicherstellen, dass Sie das richtige vom Betriebssystem bereitgestellte Design erben (z. B. Theme.Light vs. Theme.Holo.Light vs. Theme.Holo.Light.DarkActionBar). Sie können auch versionspezifische Stilinformationen zu dem entsprechenden AppBaseTheme hinzufügen, wenn Sie möchten.

In AndroidManifest.xml wenn ich android:theme="@style/myParentTheme" die Farbe und die Größe des Titels verwenden gesetzt, was ich einstellen möchten. Der Stil für Textfelder ändert sich jedoch in die alten regulären Textfelder.

Das liegt daran, dass Sie von Theme.Light erben, die den ursprünglichen (nicht holographischen) Widget-Satz verwendet.

Wenn ich android:theme="@style/AppTheme" verwende, sieht die Benutzeroberfläche sehr "Android-like" aus, aber meine spezifischen Einstellungen zum Titel haben keinen Effekt.

Das ist, weil Sie myParentTheme anstatt zu erstellen entschieden der Umsetzung Ihrer Formatdefinitionen in AppTheme.

+0

Vielen Dank! Erklärte es perfekt –