获取android中按钮的背景颜色

时间:2011-11-11 02:40:13

标签: android button background-color

如何获得按钮的背景颜色。 在xml中我使用---- android:background = XXXXX设置背景颜色 现在在活动类中,我如何检索它具有的值?

7 个答案:

答案 0 :(得分:80)

不幸的是我不知道如何检索实际的颜色。

很容易将其作为Drawable

Button button = (Button) findViewById(R.id.my_button);
Drawable buttonBackground = button.getBackground();

如果您知道这是一种颜色,那么您可以尝试

ColorDrawable buttonColor = (ColorDrawable) button.getBackground();

如果您使用的是Android 3.0+,则可以获得该颜色的资源ID。

int colorId = buttonColor.getColor();

并将其与指定的颜色进行比较,即

if (colorID == R.color.green) {
  log("color is green");
}

答案 1 :(得分:19)

private Bitmap mBitmap;
private Canvas mCanvas;
private Rect mBounds;

public void initIfNeeded() {
  if(mBitmap == null) {
    mBitmap = Bitmap.createBitmap(1,1, Bitmap.Config.ARGB_8888);
    mCanvas = new Canvas(mBitmap);
    mBounds = new Rect();
  }
}

public int getBackgroundColor(View view) {
  // The actual color, not the id.
  int color = Color.BLACK;

  if(view.getBackground() instanceof ColorDrawable) {
    if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
      initIfNeeded();

      // If the ColorDrawable makes use of its bounds in the draw method,
      // we may not be able to get the color we want. This is not the usual
      // case before Ice Cream Sandwich (4.0.1 r1).
      // Yet, we change the bounds temporarily, just to be sure that we are
      // successful.
      ColorDrawable colorDrawable = (ColorDrawable)view.getBackground();

      mBounds.set(colorDrawable.getBounds()); // Save the original bounds.
      colorDrawable.setBounds(0, 0, 1, 1); // Change the bounds.

      colorDrawable.draw(mCanvas);
      color = mBitmap.getPixel(0, 0);

      colorDrawable.setBounds(mBounds); // Restore the original bounds.
    }
    else {
      color = ((ColorDrawable)view.getBackground()).getColor();
    }
  }

  return color;
}

答案 2 :(得分:14)

您也可以尝试将颜色值设置为

标签
android:tag="#ff0000"

并从代码

访问它
String colorCode = (String)btn.getTag();

答案 3 :(得分:5)

为我获取颜色的最简单方法是:

int color = ((ColorDrawable)button.getBackground()).getColor();

测试并使用Lollipop 5.1.1

答案 4 :(得分:2)

要获取背景Drawable,请使用

public Drawable getBackground();

在基础View类中定义。

不要忘记Button可以有一个背景,即图像,颜色,渐变。如果你使用android:background =“#ffffff”,那么背景的类将是

  

android.graphics.drawable.ColorDrawable

从那里你可以直接打电话

public int getColor()

答案 5 :(得分:0)

试试这个:

list_view.getChildAt(position).setBackgroundColor(Color.YELLOW);        
ColorDrawable corItem = (ColorDrawable) list_view.getChildAt(position).getBackground();
if(corItem.getColor() == Color.YELLOW){
   Toast.makeText(NovoProcessoActivity.this,"Right Color!", Toast.LENGTH_SHORT).show();
   }else{
   Toast.makeText(NovoProcessoActivity.this,"Wrong Color!", Toast.LENGTH_SHORT).show();
}

int color =( (ColorDrawable)  list_view.getChildAt(position).getBackground()).getColor();

答案 6 :(得分:0)

var myVar = setInterval(myTimer, 1000);

function myTimer() {//shwing the timer
  var d = new Date();
  var t = d.toLocaleTimeString();
  document.getElementById("demo").innerHTML = t;
}

这是获得视图颜色(按钮,TextView ...)的最佳和简单方法

要使用Java为视图设置颜色,我们使用

int colornumber=((ColorDrawable)v.getBackground()).getColor();