【问题标题】:How to set text color in android app for all text?如何在android应用程序中为所有文本设置文本颜色?
【发布时间】:2018-08-04 04:23:07
【问题描述】:

我想为我的 android 应用定义默认文本颜色。

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

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

麻烦的是,对我来说一切都是新的,所以请随时给我建议并提供代码sn-ps和解释。

这就是我的基类的样子。如您所见,它很空

package com.ccslocal.mobile.quiz.jls;

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

public class BaseActivity extends Activity {
    //set up app preferences here
}

【问题讨论】:

    标签: android


    【解决方案1】:

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

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

    <style name="AppTheme" parent="@style/Theme.AppCompat.Light">
        ...
        <item name="android:textColor">#FF00FF</item>
        ...
    </style>
    

    然后确保将主题应用于清单中的 Activity 或 Application:

    <application
        ...
        android:theme="@style/AppTheme"
        .... 
        >
    

    你也可以定义:

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

    (来源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"
    【解决方案2】:

    为您的应用创建自定义主题。看看official guide

    【讨论】:

    • 有更通用的解决方案吗?在 OO 语言中,我必须访问所有文本视图才能应用默认样式,这似乎很奇怪。
    • @jamesw 我相信这个问题是针对 Labeeb P :) 主题是通用解决方案
    • 感谢您的回复,问题是针对您的。我找不到在不涉及访问所有文本视图以告诉他们使用样式的样式中设置字体颜色的方法。我错过了什么?
    • @jamesw 请查看“将主题应用于活动或应用程序”部分。您可以定义从标准主题“扩展”的自定义主题,并在您的情况下覆盖一些特定属性,例如默认文本颜色。然后在AndroidManifest.xml中配置这个主题
    【解决方案3】:

    是的,您是对的,您可以使用样式来做到这一点。或者您可以使用 TextView.getTextColors().getDefaultColor() 设置默认文本颜色。其实我从来没有用过这个,但我想它可能对你有帮助。

    为了风格

    <style name="TextColor">
        <item name="android:textColor">#00FF00</item>
    </style>      
    

    然后在布局文件中

    <TextView  style="@style/TextColor" />
    

    【讨论】:

    • 与简单地为所有视图设置android:textColor(XML 或Java 代码)相比,这要麻烦得多。 Anw,您的方法需要为每个视图重复努力!
    • 不,这是一个更好的解决方案,因为如果你想改变颜色,你只需要做一次,而不是每个 TextView。
    • 如果在代码中的任何一点您需要以编程方式更改文本颜色以便它影响所有文本视图,关于如何完成此操作的任何想法
    【解决方案4】:

    像这样在res/values/colors.xml 中设置默认颜色

    <color name="defaultTextColor">#ffffff</color>
    

    所以你所有的文字都是这个颜色

    android:textColor="@color/defaultTextColor"
    

    textView.setTextColor(R.color.defaultTextColor);
    

    【讨论】:

      【解决方案5】:
      • 为 TextView 创建样式:

        <style name="TextViewTheme">
            <item name="android:textColor">@android:color/white</item>
        </style>
        
      • 将其应用到 App 的样式中:

        <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>
        
      • 记得在 AndroidManifest.xml 中更改样式:

        <application
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            ...
        </application>
        

      【讨论】:

        猜你喜欢
        • 2011-08-09
        • 1970-01-01
        • 2012-09-13
        • 1970-01-01
        • 1970-01-01
        • 2013-11-12
        • 1970-01-01
        • 2020-10-06
        • 2023-03-11
        相关资源
        最近更新 更多