【问题标题】:How to access drawable resources (color) in java如何在java中访问可绘制资源(颜色)
【发布时间】:2012-10-20 11:24:49
【问题描述】:

我想访问定义为可绘制资源的颜色资源并希望在 JAVA 中切换背景颜色,基本上使用下面提到的可绘制 XML 更改了按钮的背景。我尝试访问按钮并修改颜色属性,但这将按钮的形状更改为普通方形。我想保持可绘制 XML 中定义的形状并手动更改背景颜色。

<?xml version="1.0" encoding="UTF-8"?>

<item android:state_pressed="true">
    <shape android:shape="rectangle">
        <solid android:color="#EAEAEA" />

        <corners android:bottomLeftRadius="8dip"
             android:bottomRightRadius="1dip"
             android:topLeftRadius="1dip" 
             android:topRightRadius="8dip" />
    </shape>
    </item>

<item><shape android:shape="rectangle">
        <solid android:color="#EAEA00" />

        <corners android:bottomLeftRadius="8dip" 
            android:bottomRightRadius="1dip" 
            android:topLeftRadius="1dip" 
            android:topRightRadius="8dip" />
    </shape>
     </item>

【问题讨论】:

  • 我猜你需要添加 @color/"whatevercolor it is " 并在你的按钮 xml 中添加这个
  • 我不知道该怎么做,有没有指向这个的示例代码?谢谢
  • android:color="@android:color/black" 。 希望对你有帮助
  • 我的问题更多是关于如何通过 Java 代码控制 XML 中定义的参数?我的意思是 '' 这在 之间定义,我如何从 Java 代码访问这个颜色参数?

标签: android android-layout


【解决方案1】:

您有两种可能性:

  • myButton.setBackgroundColor(Color.CHOOSE_ONE);
  • myButton.setBackgroundResource(R.color.youCustomColor);

如果您想从十六进制值设置颜色,只需使用 Color 类的静态方法:

myButton.setBackgroundColor(Color.parseColor("#RRGGBB"));
//http://developer.android.com/reference/android/graphics/Color.html#parseColor%28java.lang.String%29

【讨论】:

  • 我的问题更多是关于如何通过 Java 代码控制 XML 中定义的参数?我的意思是 '' 这在 之间定义,我如何从 Java 代码访问这个颜色参数?
  • 当我尝试使用在 XML 中定义的自定义颜色时出现错误。而我的 Eclipse ADT 迫使我使用如下格式:myTextView.setTextColor(getResources().getColor(R.color.mycustomXMLcolor)); 为什么会发生这种情况?
【解决方案2】:

您可以使用以下代码更改按钮的颜色 -

button.setBackgroundColor(Color.rgb(red, green, blue));

并从以下链接获取 rgb 值 -

http://www.ceveni.com/2009/08/set-rgb-color-codes-for-android-and-rgb.html

【讨论】:

    【解决方案3】:

    如果您使用的是资源颜色,您应该使用 getResources().getColor(R.color.example_color) 解决它

    对于此选项,您的代码如下:

    myButton.setBackgroundResource(getResources().getColor(R.color.example_color));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-28
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 2016-09-06
      • 2019-06-26
      • 2021-01-06
      相关资源
      最近更新 更多