Wie bekomme ich die Hintergrundfarbe einer Schaltfläche. In der XML-Datei stelle ich die Hintergrundfarbe mit ---- Android: background = XXXXX jetzt in der Aktivitätsklasse ein. Wie kann ich diesen Wert abrufen, den er hat?
Leider weiß ich nicht, wie ich die tatsächliche Farbe ermitteln soll.
Es ist einfach, dies als Drawable
zu bekommen
Button button = (Button) findViewById(R.id.my_button);
Drawable buttonBackground = button.getBackground();
Wenn Sie wissen, dass dies eine Farbe ist, können Sie es versuchen
ColorDrawable buttonColor = (ColorDrawable) button.getBackground();
Und wenn Sie Android 3.0+) verwenden, können Sie die Ressourcen-ID der Farbe herausfinden.
int colorId = buttonColor.getColor();
Und vergleichen Sie dies mit Ihren zugewiesenen Farben, dh.
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;
}
Sie können auch versuchen, den Farbwert als Tag festzulegen
Android:tag="#ff0000"
Und greifen Sie über den Code darauf zu
String colorCode = (String)btn.getTag();
Der einfachste Weg, um die Farbe für mich zu bekommen, ist:
int color = ((ColorDrawable)button.getBackground()).getColor();
Getestet und funktioniert mit Lollipop 5.1.1
Um den Hintergrund Drawable
zu erhalten, verwenden Sie
public Drawable getBackground();
wie in der Basisklasse View
definiert.
Vergiss nicht, dass Button
einen Hintergrund haben kann, der ein Bild, eine Farbe, ein Farbverlauf ist. Wenn Sie Android verwenden: background = "# ffffff", wird die Klasse des Hintergrunds sein
Android.graphics.drawable.ColorDrawable
Von dort können Sie einfach anrufen
public int getColor()
Versuche dies:
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();
}
oder
int color =( (ColorDrawable) list_view.getChildAt(position).getBackground()).getColor();