2017-01-05 8 views
1

Я имею этот Button в моем XML:Как изменить цвет материала значок дизайна, используемого в Button в Android

<Button 
    android:id="@+id/button_message_me" 
    style="@style/Widget.AppCompat.Button.Borderless.Colored" 
    android:layout_width="0dp" 
    android:layout_weight="0.25" 
    android:layout_height="wrap_content" 
    android:adjustViewBounds="true" 
    android:background="@drawable/ic_chat_white_48dp" 
    android:onClick="clickMessageMe"/> 

Однако, я хочу, чтобы изменить цвет ic_chat_white_48dp от белого до синего. Как сделать изменения?

То, что я уже пытался до сих пор:

После прочтения this поста, я попытался с помощью android:tint="@color/blue", но это не сработало.

Так, думая, что я, возможно, придется использовать ImageButton вместо Button (как указано в answer) я заменил Button с ImageButton в моем XML, но я приземлился на получении исключение:

java.lang.RuntimeException : не удается запустить активность ComponentInfo {chat.knowme.knowme/chat.knowme.knowme.ShowProfileActivity}: java.lang.ClassCastException: android.support.v7.widget.AppCompatImageButton не может быть приведен к android.widget.Button

Любая помощь была бы действительно оценена. Большое спасибо!

Update: Грохот был, потому что я был заливкой ImageButton к Button в моем источнике. Я исправил это и теперь больше не терпит крах (спасибо Patel Pinkal за его ответ).

Однако, цвет по-прежнему остается неизменным даже при ImageButton

+0

введите код инициализации 'Button' –

+0

Для этой кнопки не инициализирован код как таковой. Я использовал '(Button) findViewById (R.id.button_message_me);' всякий раз, когда я хотел показать/скрыть эту кнопку. И написали метод clickMessageMe для кнопки. Тем не менее, сбой происходит, как только я запускаю деятельность. – Atul

+0

см. Ниже ответ –

ответ

2

Вы пытаетесь инициализировать Button вместо AppCompatImageButton. Просто замените, как этот

AppCompatImageButton appCompatImageButton = (AppCompatImageButton) findViewById(R.id.appCompatImageButton); 

Вместо:

Button button = (Button) findViewById(R.id.button); 

И

, если вы хотите изменить цвет с помощью Button или AppCompatImageButton, вы должны изменить как

android:backgroundTint="@Color/yourColor"

Вместо

android:tint="@Color/yourColor"

+0

О, я вижу. Конечно, я попробую, это может быть причиной :) – Atul

+0

@Atul попробуйте и просмотрите его здесь –

+0

Ну, я попробовал. Crash исчез, но цвет все еще не изменился. – Atul

2

Я также сталкиваются с этой проблемой. Наконец нашел решение, используя Android Icon Design Generator Plugin. Благодаря этому вы можете создавать значки различных цветов и размеров.

Шаг1: Файл-> Настройки-> Plugin

Шаг2: Поиск значок андроида материала, вы получите Android Material Design Icon Generator Plugin в списке

Step3: Выберите это и нажмите Применить

После того, как он установлен, щелкните правой кнопкой мыши на своем проекте из студии-> new-> Значок дизайна материала или Ctrl + Alt + M

Он будет полезен разработчикам.

+0

Это действительно хорошее предложение. Если бы я не мог изменить цвет через код, я обязательно поеду за этим. – Atul