首页 文章

如何获取Android TextView的默认文本颜色?

提问于
浏览
3

我无法在Android 23中获得TextView(以及其他视图)的默认灰色文本颜色 .

我尝试使用此代码获取它:

TextView textview= (TextView) mActivity.findViewById(R.id.my_textview);

int colorFirstTry = title.getCurrentTextColor(); // black
int colorSecondTry = title.getTextColors().getDefaultColor(); // black
int colorthirdTry = ContextCompat.getColor(mActivity, android.R.color.primary_text_light); // black

我的主题是空白活动项目中使用的默认主题(来自Theme.AppCompat.Light.DarkActionBar父级的AppTheme) . 颜色分别为蓝色,深蓝色和紫色,分别为colorPrimary,colorPrimaryDark和colorAccent .

当我浏览所有Theme.AppCompat.Light.DarkActionBar父项时,我发现一个类似的灰色值:

<style name="Base.V7.Theme.AppCompat.Light" parent="Platform.AppCompat.Light">   
    ...
    <item name="colorPrimaryDark">@color/primary_dark_material_light</item>

但是这个值应该被我的应用主题 Value 所覆盖 .

3 回答

  • 12

    正如Alex here所说,你可以通过以下方式获得:

    android:textColor="@android:color/tab_indicator_text"
    

    要么

    #808080
    

    它对我很有用!

  • 0

    根据谷歌的最佳方式是

    title.setTextColor(Color.parseColor("#000000"));
    title.setAlpha(0.54f);
    

    当你想要设置其他颜色时,将alpha重设为1.0f

    来源:Google Material Design

  • 1

    请检查这个答案:

    您可以保存旧颜色,然后使用它来恢复原始值 . 下面是一个示例:ColorStateList oldColors = textView.getTextColors(); //保存原始颜色
    textView.setTextColor(Color.RED);
    ....
    textView.setTextColor(oldColors); //恢复原始颜色
    但一般来说,默认的TextView文本颜色是根据应用于您的Activity的当前主题确定的 .

    来自:What is default color for text in textview?

    希望它有所帮助

相关问题