私がしようとしていることはテーマで非常に簡単でなければなりませんが、方法はわかりません:私のアプリではすべてのテキストをデフォルトで白にしたいです。 theme.xmlでカスタムテーマを作成しました。
<style name="Theme" parent="@Android:Theme">
</style>
<style name="TextAppearance.Theme" parent="@Android:TextAppearance.Theme">
<item name="Android:textColor">#ffffffff</item>
</style>
アプリケーション全体に設定します:
<application
Android:icon="@drawable/icon"
Android:label="@string/app_name"
Android:theme="@style/Theme">
しかし、ラベルはまだ黒です。何が欠けていますか?
PS:ウィジェットごとに適用されるさまざまなテキストサイズのスタイルを追加で定義するにはどうすればよいですか?そのようなものは正しいですか?
<style name="Theme.smallText">
<item name="Android:textSize">12dp</item>
</style>
update
Android SDKのthemes.xmlを見て、テーマのテキストスタイルを設定する方法を示します。
<item name="textAppearance">@Android:style/TextAppearance</item>
私の場合、この定義で動作するはずです:
<style name="Theme" parent="@Android:Theme">
<item name="Android:textAppearance">@style/MyText</item>
</style>
<style name="MyText" parent="@Android:style/TextAppearance">
<item name="Android:textColor">#ffffffff</item>
</style>
ただし、まだ動作していません。
同じ問題の別の投稿が見つかりました: http://groups.google.com/group/Android-developers/browse_thread/thread/2897ccd0884546b9
Manifest
で、テキストの色style
を含むitem
の名前を参照する必要があります。現在、空のstyle
を参照しています。したがって、theme.xmlで次のstyle
のみを実行します。
<style name="Theme" parent="@Android:style/TextAppearance">
<item name="Android:textColor">#ffffffff</item>
</style>
Manifest
と同じ(Android:theme="@style/Theme"
)で参照し続ける
編集:
theme.xml:
<style name="MyTheme" parent="@Android:style/TextAppearance">
<item name="Android:textColor">#ffffffff</item>
<item name="Android:textSize">12dp</item>
</style>
マニフェスト:
<application
Android:icon="@drawable/icon"
Android:label="@string/app_name"
Android:theme="@style/MyTheme">
テキストの色とサイズを同じstyle
に結合していることに注意してください。また、テーマの名前をMyThemeに変更し、Manifest
でテーマを参照しています。そして、parent
値を@Android:style/TextAppearance
に変更しました。
アプリを作成すると、res/valuesフォルダーにstyles.xmlというファイルが作成されます。スタイルを変更すると、すべてのレイアウトの背景、テキストの色などを変更できます。そうすれば、個々のレイアウトに移動して手動で変更する必要がありません。
styles.xml:
<resources xmlns:Android="http://schemas.Android.com/apk/res/Android">
<style name="Theme.AppBaseTheme" parent="@Android:style/Theme.Light">
<item name="Android:editTextColor">#295055</item>
<item name="Android:textColorPrimary">#295055</item>
<item name="Android:textColorSecondary">#295055</item>
<item name="Android:textColorTertiary">#295055</item>
<item name="Android:textColorPrimaryInverse">#295055</item>
<item name="Android:textColorSecondaryInverse">#295055</item>
<item name="Android:textColorTertiaryInverse">#295055</item>
<item name="Android:windowBackground">@drawable/custom_background</item>
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
parent="@Android:style/Theme.Light"
はGoogleのネイティブカラーです。ネイティブスタイルのリファレンスは次のとおりです。 https://Android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml
デフォルトのAndroidスタイルは「テーマ」とも呼ばれます。だからあなたはそれをテーマと呼んで、おそらくプログラムを混乱させた。
name="Theme.AppBaseTheme"
は、parent="@Android:style/Theme.Light"
からすべてのスタイルを継承するスタイルを作成していることを意味します。この部分は、AppBaseThemeから再度継承する場合を除き、無視できます。 = <style name="AppTheme" parent="AppBaseTheme">
@ drawable/custom_backgroundは、Drawableのフォルダーに配置したカスタム画像です。 300x300のpng画像です。
#295055は濃い青色です。
私のコードは背景とテキストの色を変更します。ボタンのテキストについては、Googleのネイティブなスタイル(上記のリンク)をご覧ください。
次に、Androidマニフェストに、忘れずにコードを含めます。
<application
Android:theme="@style/Theme.AppBaseTheme">
アプリのテーマ全体の親として@Android:style/TextAppearance
を使用することはできません。 koopaking3のソリューション がかなり壊れているようです。
カスタムテーマを使用して、アプリ内のすべての場所でデフォルトのテキストの色を変更するには、次のようにします。少なくともAndroid 4.0+(APIレベル14+)で動作します。
res/values/themes.xml
:
<resources>
<style name="MyAppTheme" parent="Android:Theme.Holo.Light">
<!-- Change default text colour from dark grey to black -->
<item name="Android:textColor">@Android:color/black</item>
</style>
</resources>
マニフェスト:
<application
...
Android:theme="@style/MyAppTheme">
上記の欠点は、disabledアクションバーのオーバーフローメニュー項目がグレーアウトではなくデフォルトの色を使用することです。 (もちろん、アプリ内で無効なメニュー項目を使用しない場合、これは重要ではありません。)
私が学んだように この質問をすることで 、より良い方法はdrawableを使用して色を定義することです:
<item name="Android:textColor">@drawable/default_text_color</item>
...別のres/drawable/default_text_color.xml
色を指定するstate_enabled="false"
付き:
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_enabled="false" Android:color="@Android:color/darker_gray"/>
<item Android:color="@Android:color/black"/>
</selector>
アクティビティレイアウトがテーマをオーバーライドするかどうかを確認し、layout/*your_activity*.xml
にあるアクティビティレイアウトを探し、TextViewを探しますアクティビティレイアウトにAndroid:textColor="(some hex code")
のようなものが含まれているため、削除します。その後、コードを再度実行します。