7

AndroidのAppBaseThemeで何が起こるか理解できません。styles.xmlには、次のコードがあります

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

AndroidManifest.xmlでandroid:theme = "@ style / myParentTheme"を使用すると、タイトルの色とサイズが設定したいものに設定されます。ただし、テキストフィールドのスタイルは、古い通常のテキストボックスに変更されます。android:theme = "@ style / AppTheme"を使用すると、UIは非常に「Androidに似た」ように見えますが、タイトルに対する特定の設定は効果がありません。parent = "AppBaseTheme"を削除すると、AppThemeスタイルはmyParentThemeスタイルと同じように動作します。

さらに、Styleタグのname属性を入力しているときにCtrl + Spaceを実行すると、すべてのR.attr要素が表示されないのはなぜですか?

助けてください。ありがとう。

4

1 に答える 1

17

Eclipseの新規プロジェクトウィザードを使用してアクティビティを作成することを選択した場合、Eclipseがリソースを定義AppThemeAppBaseThemeます。AppBaseTheme通常、、、、およびの3つの定義がres/values/ありres/values-v11/ますres/values-v14/AppThemeから継承しAppBaseThemeます。

AppTheme目的は、独自のテーマ(たとえば)を考案するのではなく、アプリ固有のスタイル情報のほとんどをに入れることですmyParentThemeAppBaseThemeほとんどの場合、OSが提供する適切なテーマから継承していることを確認します(例:vs。vs Theme.Light. )。必要に応じて、バージョン固有のスタイル情報を適切なものに追加することもできます。Theme.Holo.LightTheme.Holo.Light.DarkActionBarAppBaseTheme

AndroidManifest.xml私が使用するとき、タイトルの色とサイズはandroid:theme="@style/myParentTheme"私が設定したいものに設定されます。ただし、テキストフィールドのスタイルは、古い通常のテキストボックスに変更されます。

Theme.Lightこれは、元の(非ホログラフィック)ウィジェットセットを使用するから継承しているためです。

UIを使用するとandroid:theme="@style/AppTheme"、非常に「Androidに似た」ように見えますが、タイトルに対する特定の設定は効果がありません。

これはmyParentTheme、スタイル定義をに入れるのではなく、作成することにしたためですAppTheme

于 2012-12-26T16:58:02.863 に答える