Я хочу найти цвет фона макета из моего кода. Есть ли способ найти его? что-то вроде linearLayout.getBackgroundColor()
?Получить цвет фона макета
ответ
Это может быть выполнено только в API 11+, если ваш фон является сплошным цветом.
int color = Color.TRANSPARENT;
Drawable background = view.getBackground();
if (background instanceof ColorDrawable)
color = ((ColorDrawable) background).getColor();
Я просто собирался отредактировать свой ответ и сказать, что конкретно это может сработать! Однако я не уверен, почему существует ограничение API 11+? 'ColorDrawable' кажется доступным с API 1, а также view.getBackground(). –
Nevermind. Я вижу, что '.getColor' для ColorDrawable был добавлен в API 11. –
Вы можете преобразовать« Drawable »в« Bitmap »и получить первый пиксель. 'int color = bitmap.getPixel (0, 0);' –
ColorDrawable.getColor() будет работать только с уровнем API выше 11, так что вы можете использовать этот код, чтобы поддерживать его от уровня API 1. С помощью отражения ниже уровня API 11.
public static int getBackgroundColor(View view) {
Drawable drawable = view.getBackground();
if (drawable instanceof ColorDrawable) {
ColorDrawable colorDrawable = (ColorDrawable) drawable;
if (Build.VERSION.SDK_INT >= 11) {
return colorDrawable.getColor();
}
try {
Field field = colorDrawable.getClass().getDeclaredField("mState");
field.setAccessible(true);
Object object = field.get(colorDrawable);
field = object.getClass().getDeclaredField("mUseColor");
field.setAccessible(true);
return field.getInt(object);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return 0;
}
Для получить цвет фона макета:
LinearLayout lay = (LinearLayout) findViewById(R.id.lay1);
ColorDrawable viewColor = (ColorDrawable) lay.getBackground();
int colorId = viewColor.getColor();
Если это RelativeLayout то просто найти свой идентификатор и использовать там объект вместо LinearLayout.
Самый простой способ сделать это:
view.getSolidColor();
Короткий и простой способ:
int color = ((ColorDrawable)view.getBackground()).getColor();
- 1. Установить цвет фона макета
- 2. Как установить цвет фона макета?
- 3. Android - Динамически меняющийся цвет фона макета
- 4. Настройка программно цвет фона макета = nullpointerexc
- 5. Цвет фона JComponent с использованием нулевого макета?
- 6. изменить цвет фона макета, который имеет фрагмент
- 7. изменить цвет фона макета в Android
- 8. Получить цвет фона GtkEntry
- 9. Получить ImageButton цвет фона
- 10. Получить цвет фона окна
- 11. Как изменить цвет фона макета и сохранить этот цвет навсегда
- 12. Android: Получить цвет фона фрагмента
- 13. Как получить цвет фона холста
- 14. Получить цвет фона из HTML
- 15. Получить QPushButton прессованный цвет фона
- 16. Как получить цвет фона TextView?
- 17. WinApi - Получить стандартный цвет фона
- 18. Получить цвет фона в списке
- 19. Как получить цвет фона сайта?
- 20. Как получить цвет фона emacs
- 21. Цвет фона
- 22. Обновить цвет фона фона
- 23. Изменить цвет фона макета после начала другой деятельности
- 24. Как изменить цвет фона унаследованного стиля в стилях макета Android?
- 25. изменить цвет фона для макета через программно в android
- 26. UIView игнорирует цвет фона в XCode 8 (или вопрос макета)
- 27. Как определить границу для макета, уже имеющего некоторый цвет фона
- 28. В андроиде цвет фона линейного макета не работает
- 29. Полная ширина div цвет фона внутри жидкой сетки макета
- 30. Изменение фона макета по теме
Поскольку фон не может быть цвет, вы можете использовать linearLayout.getBackground(), который даст вы «Drawable». В частности, нет API для получения цвета фона. [Подробнее в документах для просмотра] (http://developer.android.com/reference/android/view/View.html#getBackground%28%29) –
Но мне действительно нужно найти цвет макета. Должен быть какой-то другой путь! или можно получить его из «Drawable»? –