【问题标题】:Set Background color programmatically [duplicate]以编程方式设置背景颜色[重复]
【发布时间】:2014-06-24 10:26:31
【问题描述】:

我尝试以编程方式设置背景颜色,但是当我设置每一种颜色时,背景都是黑色,但任何颜色的背景都是白色的,就像应用程序主题一样。

View someView = findViewById(R.id.screen);
View root = someView.getRootView();
root.setBackgroundColor(color.white);

你能看到代码吗?

【问题讨论】:

  • 什么是color.white

标签: android background-color


【解决方案1】:

我不明白你的问题......你所说的“当我设置我的每一种颜色时”是什么意思?试试这个(编辑:原始答案中的“#ffffff”更改为“#ffffff”

  yourView.setBackgroundColor(Color.parseColor("#ffffff"));

【讨论】:

    【解决方案2】:

    你需要使用getResources()方法,尝试使用以下代码

    View someView = findViewById(R.id.screen);
    View root = someView.getRootView();
    root.setBackgroundColor(getResources().getColor(color.white)); 
    

    编辑::

    getResources.getColor() 已被弃用,请按如下方式使用

     root.setBackgroundColor(ContextCompat.getColor(this, R.color.white)); 
    

    【讨论】:

    • getResources().getColor() 已弃用
    • 在 AppCompatActivity 中你可以只使用 context.getColor() 或 this.getColor - 在片段中你可以使用 getActivity().getColor()
    【解决方案3】:

    你可以使用

     root.setBackgroundColor(0xFFFFFFFF);
    

     root.setBackgroundColor(Color.parseColor("#ffffff"));
    

    【讨论】:

    • root.setBackgroundColor(Color.RED);也
    • 如果使用第一个示例,哪些字节映射到哪些颜色分量?例如,是0xRRGGBBAA,还是0xAARRGGBB,或者0xBBGGRRAA,或者0xXXRRGGBB?如果你在做白色和黑色并不重要,但对于基本上任何其他颜色,有必要知道这些信息。
    • @Aroth 0xAARRGGBB.
    【解决方案4】:

    以前的答案现已弃用,您需要使用ContextCompat.getColor 正确检索颜色:

    root.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.white));
    

    【讨论】:

    • in kotlin root.setBackgroundColor(ContextCompat.getColor(activity?.applicationContext!!, R.color.white));
    【解决方案5】:

    如果你只想使用一些预定义的Android颜色,你可以使用Color.COLOR(其中COLORBLACKWHITERED等):

    myView.setBackgroundColor(Color.GREEN);
    

    否则您可以按照其他人的建议使用

    myView.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.myCustomGreen));
    

    我不建议直接使用十六进制颜色。您应该将所有自定义颜色保存在 colors.xml 中。

    【讨论】:

    • 最简洁的答案
    【解决方案6】:

    这必须有效:

    必须使用getResources().getColor(R.color.WHITE)获取颜色资源,必须在colors.xml资源文件中添加该资源

    View someView = findViewById(R.id.screen);
    
    someView.setBackgroundColor(getResources().getColor(R.color.WHITE));
    

    【讨论】:

      【解决方案7】:

      如果您将颜色代码保存在 values 文件夹下的 colors.xml 中,那么您应该调用以下代码:

      root.setBackgroundColor(getResources().getColor(R.color.name));
      

      name 表示你在<color/> 标签中声明。

      【讨论】:

      • 这已被弃用。
      【解决方案8】:

      在我的情况下,它没有改变颜色,因为我是在我的 xml 资源中设置颜色

      删除设置颜色的行后,它以编程方式完美运行

      这是我在 RecyclerView 中做的一个例子

      final Drawable drawable = ContextCompat.getDrawable(mContext, R.drawable.ic_icon).mutate();
      
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
          holder.image.setBackground(drawable);
      } else {
          holder.image.setBackgroundDrawable(drawable);
      }
      

      【讨论】:

        猜你喜欢
        • 2021-10-18
        • 2011-01-09
        • 1970-01-01
        • 2023-03-26
        • 2019-04-22
        • 2023-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多