如何在Android应用程序中为所有文本设置文本颜色?

jam*_*esc 56 android

我想为我的Android应用程序定义默认文本颜色.

我有一个基本活动类,所有活动都是从它扩展而来的,我认为这可能是定义颜色的好地方.

如果不是什么是更好的解决方案?也许风格?

麻烦就是这个,对我来说都是新手,所以请随时告诉我并提供代码片段和解释.

这是我的基类的样子.你可以看到它很空洞

package com.ccslocal.mobile.quiz.jls;

import android.app.Activity;
import android.os.Bundle;

public class BaseActivity extends Activity {
    //set up app preferences here
}
Run Code Online (Sandbox Code Playgroud)

The*_*eIT 80

正如denis.solonenko的回答中提到的,正确的方法是修改你的主题.

在定义主题的位置(在themes.xml或styles.xml文件中),您需要添加如下内容:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
    ...
    <item name="android:textColor">#FF00FF</item>
    ...
</style>
Run Code Online (Sandbox Code Playgroud)

然后确保主题应用于清单中的活动或应用程序:

<application
    ...
    android:theme="@style/AppTheme"
    .... 
    >
Run Code Online (Sandbox Code Playgroud)

您还可以定义:

  • textColor - 任何给定视图的默认文本颜色
  • textColorPrimary - 启用按钮和大文本视图的默认文本颜色
  • textColorSecondary - 中小文本视图的默认文本颜色
  • textColorTertiary - ?

(Source TextColor vs TextColorPrimary vs TextColorSecondary)

请记住,许多其他内容可能会覆盖这些预定义的颜色,例如应用的样式或不同资源文件夹中的定义.

请参阅此处以获取主题项的完整列表:https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml

  • 这对我帮助很大,虽然我使用`name ="android:textColor"`而不是`name ="android:textColorPrimary"`. (6认同)

den*_*nko 18

为您的应用创建自定义主题.看看官方指南.


and*_*dev 14

是的,你是对的,你可以使用风格.或者您可以使用TextView.getTextColors().getDefaultColor()来设置默认文本颜色.其实我从来没用过这个,但我认为它可能对你有帮助.

对于风格

<style name="TextColor">
    <item name="android:textColor">#00FF00</item>
</style>      
Run Code Online (Sandbox Code Playgroud)

然后在布局文件中

<TextView  style="@style/TextColor" />
Run Code Online (Sandbox Code Playgroud)

  • 不,这是一个更好的解决方案,因为如果你想改变颜色,你只需要做一次,而不是每个TextView. (9认同)
  • 与简单地为所有视图设置`android:textColor`(XML或Java代码)相比,这更麻烦.Anw,你的方法需要为每一个视图重复努力! (5认同)
  • 在所有textview中反复添加样式是附加工作. (3认同)

Lab*_*lan 9

设置默认的颜色在你res/values/colors.xml这样的

<color name="defaultTextColor">#ffffff</color>
Run Code Online (Sandbox Code Playgroud)

所以你的所有文字都有这种颜色

android:textColor="@color/defaultTextColor"
Run Code Online (Sandbox Code Playgroud)

要么

textView.setTextColor(R.color.defaultTextColor);
Run Code Online (Sandbox Code Playgroud)


Woj*_*tek 6

  • 为 TextView 创建样式:

    <style name="TextViewTheme">
        <item name="android:textColor">@android:color/white</item>
    </style>
    
    Run Code Online (Sandbox Code Playgroud)
  • 将其应用于应用程序的样式:

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textViewStyle">@style/TextViewTheme</item>
    </style>
    
    Run Code Online (Sandbox Code Playgroud)
  • 并记住在 AndroidManifest.xml 中更改样式:

    <application
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        ...
    </application>
    
    Run Code Online (Sandbox Code Playgroud)