【问题标题】:how to get theme color programmatically in android java? [duplicate]如何在android java中以编程方式获取主题颜色? [复制]
【发布时间】:2021-03-30 01:12:18
【问题描述】:

我是使用 android java 开发的新手。我正在尝试将按钮的背景和 textcolor 设置为来自 /values/themes/themes.xmlcolorPrimarycolorOnPrimary 值,以便在深色主题按钮上看起来仍然正常。

我认为我需要以编程方式获取这些值。 getResources().getColor(R.color.xxx) 方法只返回从/values/colors.xml 设置的颜色

我找不到此问题的任何重复项,请仔细阅读我想要获取的内容。另外,我没有特别设定自己的主题。我调整了预设主题。 (themes.xmlthemes.xml(夜晚))

【问题讨论】:

    标签: java android


    【解决方案1】:

    要获取主题中属性的值,您可以使用以下内容:

    val typedValue = TypedValue();
    theme.resolveAttribute(R.attr.colorPrimary, typedValue, true);
    val color = ContextCompat.getColor(this, typedValue.resourceId)
    
    button.setBackgroundColor(color)
    

    或者在java中:

    TypedValue typedValue = new TypedValue();
    getTheme().resolveAttribute(R.attr.colorSecondary, typedValue, true);
    int color = ContextCompat.getColor(this, typedValue.resourceId);
    
    button.setBackgroundColor(color);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      相关资源
      最近更新 更多