2016-03-08 1 views
1

У меня есть куча иконок (вводимого коэффициента), определенный подобный этому (от Open Source Материал иконки Google):Как установить цвет внешней формы, определенный в XML в Android?

<vector xmlns:android="http://schemas.android.com/apk/res/android" 
     android:width="24dp" 
     android:height="24dp" 
     android:viewportWidth="24.0" 
     android:viewportHeight="24.0"> 
    <path 
     android:fillColor="#FF000000" 
     android:pathData="M20,4H4c-1.11,0 -1.99,0.89 -1.99,2L2,18c0,1.11 0.89,2 2,2h16c1.11,0 2,-0.89 2,-2V6c0,-1.11 -0.89,-2 -2,-2zm0,14H4v-6h16v6zm0,-10H4V6h16v2z"/> 
</vector> 

Мне нужно изменить цвет с помощью моделирования. Он используется в коде следующим образом:

  <ImageView 
       android:layout_gravity="center" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:layout_weight="1" 
       android:contentDescription="@string/cd.icon_amount" 
       android:src="@drawable/ic_local_atm_24dp"/> 

Но как вы меняете цвет в ImageView через внешний файл стиля?

Например, как применить нижеприведенный фрагмент XML?

<style name="icon"> 
    <item name="color">@color/grey</item> 
</style> 

Обновление 1: Я хотел изменить цвет в XML через раздел стиля во внешнем файле, чем файл формы. Я не хочу, чтобы это было сделано программно.

ответ

0

Этот ответ от here

ImageView b = new ImageView(new ContextThemeWrapper(this, R.style.ButtonText), null, 0); 

Использовать ContextThemeWrapper

И

использовать конструктор 3-х аргументов (не будет работать без этого)

+0

К сожалению, если это не было ясно, но я хотел, чтобы стиль его в XML, но не в фактический файл формы. Спасибо за помощь. – noobsy

0

Если вы хотите сделайте это программно, вы можете сделать это:

Сначала добавьте идентификатор к вашим ImageView следующим образом:

<ImageView 
      android:layout_gravity="center" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:layout_weight="1" 
      android:id="@+id/ivTest" 
      android:contentDescription="@string/cd.icon_amount" 
      android:src="@drawable/ic_local_atm_24dp"/> 

Далее следует тем шагам:

ImageView iv = (ImageView)findViewById(R.id.ivTest); 
GradientDrawable bgShape = (GradientDrawable)iv.getDrawable(); 
bgShape.setColor(ContextCompat.getColor(this, R.color.color)); 
+0

Извините, если это было неясно, но я хотел стилизовать его в XML, но не в самом файле формы. Спасибо за помощь. – noobsy

+0

Значит ли вы, что из XML с изменением образа меняют цвет формы? –

+0

Что-то вроде этого да. В основном я хочу, чтобы изменить цвет в файле стиля позже, не редактируя файл формы. – noobsy

Смежные вопросы