Как получить цвет фона кнопки. В xml я устанавливаю цвет фона с помощью: android: background = XXXXX теперь в классе активности, как я могу получить это значение, которое у него есть?
Получить цвет фона кнопки в android
Ответ 1
К сожалению, я не знаю, как получить фактический цвет.
Легко получить это как Drawable
Button button = (Button) findViewById(R.id.my_button);
Drawable buttonBackground = button.getBackground();
Если вы знаете, что это цвет, вы можете попробовать
ColorDrawable buttonColor = (ColorDrawable) button.getBackground();
И если вы на Android 3.0+, вы можете выйти из идентификатора ресурса цвета.
int colorId = buttonColor.getColor();
И сравните это с назначенными цветами, т.е.
if (colorID == R.color.green) {
log("color is green");
}
Ответ 2
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;
}
Ответ 3
Вы также можете попробовать что-то вроде установки значения цвета в качестве тега, например
android:tag="#ff0000"
И получить его от кода
String colorCode = (String)btn.getTag();
Ответ 4
Самый простой способ получить цвет для меня:
int color = ((ColorDrawable)button.getBackground()).getColor();
Протестировано и работает на Lollipop 5.1.1
Ответ 5
Чтобы получить фон Drawable
, вы используете
public Drawable getBackground();
как определено в базовом классе View
.
Не забывайте, что Button
может иметь фон, который представляет собой изображение, цвет, градиент. Если вы используете android: background = "# ffffff", класс фона будет
android.graphics.drawable.ColorDrawable
Оттуда вы можете просто вызвать
public int getColor()
Ответ 6
Попробуйте следующее:
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();