0

私はアンドロイド開発が初めてです。Androidスタイルのカスケードメカニズムについて混乱しています。actionBar の textColor を設定したい場合。私はこのようにする必要があります。

    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
<!--         API 14 theme customizations can go here. -->
         <item name="android:actionBarStyle">@style/MyActionBar</item>
    </style>

     <!-- style for the action bar backgrounds -->
    <style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar">
        <item name="android:background">@drawable/border</item>     
        <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>   
    </style>

  <style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textColor">#eee</item>
  </style>

これはうまくいきます!! しかし、私が混乱しているのは、なぜ以下が機能しないのですか?

    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
<!--         API 14 theme customizations can go here. -->
         <item name="android:actionBarStyle">@style/MyActionBar</item>
         <item name="android:textColor">#eee</item>
    </style>
4

1 に答える 1

0

Android のスタイルはViewGroup、HTML のように、ラッピング/外側のビュー ( ) からラップされた/内側のビューに継承されません。android:textColorそのため、 of を設定してAppBaseThemeも、アクション バーのタイトル テキストのスタイルには影響しません。

スタイル定義には次のように記載されています。

  • スタイルとして使用するAppBaseTheme場合 (この場合、アクティビティのテーマとして、またはアプリケーションのすべてのアクティビティとして)、次のように使用MyActionBarします。actionBarStyle
  • MyActionBarスタイルとして(この場合はアクションバーのスタイルとして)使用する場合は、次のように使用しMyTheme.ActionBar.TitleTextStyleます。titleTextStyle
  • スタイルとして使用するMyTheme.ActionBar.TitleTextStyle場合(この場合、タイトル テキストのスタイルとして)、 として使用#eeetextColorます。

あなたが言ったように、「スタイルがテーマとして適用されると、アクティビティまたはアプリケーションのすべてのビューは、サポートする各スタイル プロパティを適用します。」ただし、親スタイル ( TextAppearance.Holo.Widget.ActionBar.Title) は異なるandroid:textColorを定義しているため、テーマで定義されているスタイルには準拠していません。

于 2013-05-22T11:56:59.283 に答える