Как я могу изменить выделенный значок кнопки программно?

#android #button #material-design

#Android #кнопка #материал-дизайн

Вопрос:

https://material.io/develop/android/components/buttons#text-button Из этой ссылки есть метод setIcon, но как я могу до него добраться? введите описание изображения здесь

введите описание изображения здесь

Ответ №1:

Если вы не используете material theme в качестве темы своего приложения, вам необходимо объявить Material button следующим образом в xml:

  <com.google.android.material.button.MaterialButton
                android:id="@ id/outlinedButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Outlined button"
                app:icon="@drawable/ic_launcher_background"
                style="@style/Widget.MaterialComponents.Button.OutlinedButton.Icon"
                />
 

И изменить значок программно:

 findViewById<MaterialButton>(R.id.outlinedButton).setIcon(ContextCompat.getDrawable(this,R.drawable.ic_launcher_foreground))
 

Комментарии:

1. Спасибо. Я использую свою собственную тему, но родительской является Тема. Компоненты материала. Свет. NoActionBar однако этого недостаточно, мне нужно использовать то, что вы сказали.

Ответ №2:

В Android каждый компонент виджета пользовательского интерфейса является либо a View , либо производным от View , и, согласно документации, Button является производным от TextView .

Теперь есть кое-что важное, что нужно знать о текстах в Android. Фреймворк позволяет определять Compound Drawables для каждого текста — взгляните на этот метод. С его помощью вы можете программно настроить составные чертежи, но обратите внимание также на Related XML Attributes раздел документации — чертежи могут быть определены в XML, что обычно является самым простым способом (если это применимо в данном случае, конечно).

Изображение кнопки, которое вы прикрепили, выглядит так MaterialButton , что оно также является стандартным Button , поэтому значок «плюс» должен быть просто составным и, как таковой, должен быть легко изменяемым, как описано выше.

РЕДАКТИРОВАТЬ: если подумать, с библиотекой material Design от Google для Android все не так просто. Взгляните на MaterialButton документы, которые я привел выше — там есть setIcon() метод, и он, вероятно, отвечает на ваш вопрос. Вы также можете определить свой значок, который можно нарисовать в XML, используя app:icon атрибут.