Obtener el color de fondo de un botón en android

¿Cómo puedo obtener el color de fondo de un botón. En el xml i establecer el color de fondo utilizando —- android: background = XXXXX ahora en la clase de actividad ¿cómo puedo recuperar este valor que tiene?

6 Solutions collect form web for “Obtener el color de fondo de un botón en android”

Lamentablemente no sé cómo recuperar el color real.

Es fácil obtener esto como un Drawable

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

Si sabes que es un color, entonces puedes intentarlo

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

Y si estás en Android 3.0 o superior, puedes obtener el identificador de recurso del color.

 int colorId = buttonColor.getColor(); 

Y comparar esto con los colores asignados, es decir.

 if (colorID == R.color.green) { log("color is green"); } 
 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; } 

También puede probar algo como establecer el valor del color como la etiqueta como

 android:tag="#ff0000" 

Y acceder desde el código

 String colorCode = (String)btn.getTag(); 

La forma más sencilla de obtener el color para mí es:

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

Probado y trabajando en Lollipop 5.1.1

Para obtener el fondo Drawable , utilice

 public Drawable getBackground(); 

Como se define en la clase de View base.

No olvide que el Button puede tener un fondo que es una imagen, un color, un degradado. Si usas android: background = "# ffffff", la clase del fondo será

Android.graphics.drawable.ColorDrawable

Desde allí se puede simplemente llamar

 public int getColor() 

Prueba esto:

 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(); } 

o

 int color =( (ColorDrawable) list_view.getChildAt(position).getBackground()).getColor(); 
  • Android: cambia dinámicamente TextView Color de fondo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.