Я создал небольшой пользовательский вид, который расширяет ImageView. Мое пользовательское представление предоставляет метод showError(int)
, где я могу передать идентификатор ресурса, который должен отображаться в виде содержимого изображений. Было бы здорово, если бы я мог передать простой идентификатор ресурса цвета или идентификатор ресурса ресурса.Является ли ресурс цветным или доступным?
Моя проблема: как определить, является ли переданный идентификатор ресурса Drawable или Color?
Мой текущий подход что-то вроде этого:
class MyImageView extends ImageView{
public void showError(int resId){
try{
int color = getResources().getColor(resId);
setImageDrawable(new ColorDrawable(color));
}catch(NotFoundException e){
// it was not a Color resource so it must be a drawable
setImageDrawable(getResources().getDrawable(resId));
}
}
}
Безопасно ли это сделать? Мое предположение заключается в том, что идентификатор ресурса действительно уникален. Я имею в виду не уникально в R.drawable или R.color, но совершенно уникальный в R
Так что нет
R.drawable.foo_drawable = 1;
R.color.foo_color = 1;
Верно ли, что идентификатор 1
будет присвоен только одному из этих ресурсов но не для обоих?
Это именно то, что я искал! Спасибо – sockeqwe
Нельзя ли также использовать getDrawable и проверить, какой экземпляр он (например, ColorDrawable или BitmapDrawable?) – Gerard