2016-10-16 2 views
1

Android SDK предоставляет следующие значки.Можно ли установить иконки Android SDK с цветом?

Есть ли способ установить цвет для них .. и, если возможно, как это сделать?

<ImageView 
     android:id="@+id/share_button" 
     style="@style/IconNav" 
     android:src="@android:drawable/ic_menu_share"/> 

    <ImageView 
     android:id="@+id/bookmark_button" 
     style="@style/IconNav" 
     android:src="@android:drawable/ic_input_get"/> 

enter image description here

UPDATE

После выполнения полного обновления проекта, оказывается атрибут tint в Xml сделал трюк.

За короткий ответ

.. это решение, которое работает для меня - добавить свойство к ImageView XML:

android:tint="@color/grass_dark" 

Ответ от @goldenb является тщательный пробег различных способов решения для этого, поэтому отмечаю, что один в качестве ответа.

ответ

3

Вы действительно можете использовать оттенок как способ Изменение ImageView «S Цвет, НО вам следует напомнить, что android:tint всегда будет применяться на вершине оригинального цвета.

как заявил блоггер danlew

Оттенок
  • ImageView смешивает оттенок цвета с оригинальным активом. Вы хотите, чтобы цвет оттенка захватывал полностью; вместо этого применяет оттенок поверх существующего цвета. Так, например, если исходный ресурс черный, и вы хотите, чтобы это было # 77FFFFFF (полупрозрачный оттенок белого), вы фактически получите темный оттенок белого с черным фоном под ним.

  • android: оттенок ограничен ImageView. Вы хотите, чтобы можно было нарисовать любой Drawable в любом представлении.

Одна из возможных альтернатив было бы для вас использовать андроид ColorFilter

Согласно official documentation:

Цветной фильтр можно использовать с краской, чтобы изменить цвет каждого пиксель, нарисованный этой краской. Это абстрактный класс, который никогда не должен использоваться напрямую.

Есть много более или менее сложных вещей, которые вы можете сделать с ColorFilter, но как вы можете применить это?

Один простой example от другого так вопрос:

//White tint 
imageView.setColorFilter(Color.argb(255, 255, 255, 255)); 

or 

imageView.setColorFilter(ContextCompat.getColor(context,R.color.COLOR_YOUR_COLOR)) 

Или более полный ответ здесь в SO от here

ImageView redCircle = (ImageView) findViewById(R.id.circle_red_imageview); 
ImageView greenCircle = (ImageView) findViewById(R.id.circle_green_imageview); 
ImageView blueCircle = (ImageView) findViewById(R.id.circle_blue_imageview); 



// we can create the color values in different ways: 
redCircle.getDrawable().setColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY); 
greenCircle.getDrawable().setColorFilter(0xff00ff00, PorterDuff.Mode.MULTIPLY); 
blueCircle.getDrawable().setColorFilter(getResources().getColor(R.color.blue), PorterDuff.Mode.MULTIPLY); 

Вы должны проверить эти ссылки, если вы хотите узнать больше

SO - What is the difference between background, backgroundTint, backgroundTintMode attributes in android layout xml?

setColorFilter()

Fast Android asset theming with ColorFilter

SO-Modifying the color of an android drawable

+0

@gnB Вы смогли решить вашу проблему? Я считаю, что этот ответ должен быть помечен как правильный, дайте мне знать, если это помогло =) – HenriqueMS

+1

Это решение, определяющее цвет на Java, работало так же, как и с помощью 'android: tint'. Как и в случае с другим подходом, мне пришлось очистить/обновить проект, чтобы он работал. Спасибо за указатель и подробности – gnB

+0

@gnB мое удовольствие! – HenriqueMS

1

Вы можете использовать растровое изображение с оттенком. Добавьте это в свою папку.

ic_input_get_colored.xml:

<?xml version="1.0" encoding="utf-8"?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
     android:src="@android:drawable/ic_input_get" 
     android:tint="@color/yourDesiredColor"/> 
+0

Это работало с '' тег. Мне пришлось очистить/обновить проект, чтобы он работал. – gnB

+0

Замечательный. Удачи. – MohanadMohie

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

  • Нет связанных вопросов^_^