Как изменить цвет формы, заданной в представлении изображения

Теперь проблема начинается только с установки цвета фигуры. Я создал одну прямоугольную фигуру в drawable и установил ее в ImageView следующим образом:

 <LinearLayout android:layout_width="0dp" android:layout_height="fill_parent" android:orientation="vertical" android:layout_weight="0.15" android:layout_marginRight="10dp" android:gravity="center_vertical"> <ImageView android:id="@+id/iv_priority" android:src="@drawable/case_priority" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> 

РЕДАКТИРОВАТЬ

Мой случай_priority.xml

 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#009600" /> <size android:width="30dp" android:height="30dp" /> </shape> 

Теперь мне нужно изменить цвет этой фигуры. На самом деле этот цвет поступает из веб-сервиса, и мне нужно его изменить. Итак, мой вопрос : как мы можем изменить цвет этой формы программно. И установите его для просмотра изображений. Я провел несколько примеров в stackoverflow, но я не могу изменить его на изображение. Пожалуйста, помогите !!!! Заранее спасибо.

РЕДАКТИРОВАТЬ:

Может быть, я был неясно в моем вопросе, так что просто утонченность в вопросе. На самом деле у меня есть ImageView, где я устанавливаю источник, который на самом деле доступен для рисования. По умолчанию его зеленый цвет, как в моем коде, показанном выше. Теперь веб-служба возвращает цвет этого изображения, который необходимо соответствующим образом изменить, поэтому я не могу его изменить из xml во время выполнения, поэтому мне нужно изменить его из java-файла. Поскольку я использую представление формы и изображения, .setBackground () здесь не поможет. Итак, что может быть вероятным решением для этого. Спасибо за ответ и извините за неудобства.

Thanx для всех ответов. Это помогло мне получить ответ.

В My layout я изменил android:src="" to android:background="@drawable/case_priority" И в моем java-файле я n = включил этот код: ->

  Resources res = getResources(); final Drawable drawable = res.getDrawable(R.drawable.case_priority); drawable.setColorFilter(Color.YELLOW, Mode.SRC_ATOP); ImageView img = (ImageView)findViewById(R.id.iv_priority); img.setBackgroundDrawable(drawable); 

это оно. Надеюсь, это будет кто-то.

Посмотрите здесь

http://developer.android.com/guide/topics/graphics/2d-graphics.html#shape-drawable .

Вместо того, чтобы создавать Shape в коде, вы можете использовать inflate для раздувания вашего XML, если хотите.

Добавить это в изображение

 android:background="#152" // or some other color code 

Изменить 1: сделать это с помощью кода.

 ImageView.setBackgroundColor(Color.parseColor("red")); // Or any color code like #000 , #987 

Изменить 2:

 ImageView Imgs = (ImageView) findViewById(R.id.iv_priority); Imgs.setBackgroundColor(Color.parseColor("ColorCode")); 

IimageView.setBackgroundColor ( "# 152");

Как и ответ Ларса Блумберга, я также не хотел менять фон, поэтому я применил следующее к коду для своего изображения, так как у меня не было GradientDrawable:

 Drawable drawable = imageView.getDrawable(); drawable.setColorFilter(Color.CYAN, PorterDuff.Mode.MULTIPLY); 

Все решения предлагают использовать фон ImageView. Я думаю, что это не желаемое решение. Вопрос уже отражает то, что было бы интуитивным подходом: применение формы к атрибуту src . Чтобы затем изменить цвет формы программно, вы должны:

 GradientDrawable drawable = (GradientDrawable) priorityImageView.getDrawable(); drawable.setColor(Color.RED); 

Учитывая, что форма назначается как в исходном вопросе:

 <ImageView android:id="@+id/iv_priority" android:src="@drawable/case_priority" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

Это также дает то преимущество, что вы можете установить фон ImageView отдельно от его содержимого.

Intereting Posts