10

setTheme を使用して onCreate のアクティビティのテーマを変更しています (これはより信頼性が高いはずなので、super.onCreate() を呼び出す前でも行っています)。

背景色と前景色を変更するという意味で機能します。ただし、私のレイアウトには、textAppearanceLarge などのスタイルを使用する要素がいくつかあります。現在、Android の textAppearanceLarge は内部で textPrimaryColor を使用していますが、これは私のテーマではまだ変更されていません。

テーマでプライマリ テキストの色をオーバーライドしようとしましたが、うまくいかないようです。

テーマの重要な部分は次のとおりです。

<style name="Theme.MyApp.White">
   <item name="android:background">@android:color/white</item>
   <item name="android:textColor">#000000</item>
</style>

背景は白く、プレーンな TextViews は黒く表示されます...しかし、textAppearanceLarge を使用する TextViews は白く、非表示 (白地に白) です。

私はこのようなことを試しました:

   <item name="android:ColorPrimary">#000000</item>
   <item name="android:textColorPrimary">#000000</item>
   <item name="android:attr/textColorPrimary">#000000</item>

しかし、それらのどれも何もしません。魔法のトリックは何ですか?

4

3 に答える 3

7

回避策として、レイアウトで使用する代わりにtextAppearanceLarge(xml を使用してレイアウトを作成している場合)、textAppearanceLargestyles.xml で独自のスタイルを定義します。これは、色を白に変更できることを除いて、android のデフォルトのものをエミュレートします。

xml レイアウト:

<!-- example textview -->
<TextView style="@style/large" android:text="text goes here"></TextView>

次に、styles.xml で

<style name="large">
    <item name="android:textColor">@android:color/white</item>
    <!-- other necessary items here like font etc.-->
</style>
于 2010-10-18T19:04:34.620 に答える
4

「スタイル」と「テーマ」の唯一の違いは、スタイルが適用される範囲です。アクティビティに適用されるスタイルは、テーマと呼ばれます。

これがトピックに関する良い記事です: http://brainflush.wordpress.com/2009/03/15/understanding-android-themes-and-styles/

于 2011-02-10T00:28:39.993 に答える
1

私は間違った木を吠えていました。色をオーバーライドすると、すべてがうまくいきました。ただし、私のテーマで定義することによりandroid:background、すべての色 (textColorPrimary を含む) をオーバーライドしたにもかかわらず、すべてが完全に台無しになり、すべてのテキストが白く表示されました。省略android:backgroundするとうまくいきました。

于 2010-10-19T06:39:00.183 に答える