https://material.io/develop/android/components/buttons#text-button Из этой ссылки есть метод setIcon, но как мне его достичь?
Если вы не используете материальную тему в качестве темы приложения, вам необходимо объявить материальную кнопку следующим образом в 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))
В Android каждый компонент виджета пользовательского интерфейса является либо View , либо производным от View
, и, согласно документации, кнопка является производной от TextView
.
Теперь есть кое-что важное, что нужно знать о текстах в Android. Фреймворк позволяет определить Compound Drawables
для каждого текста — взгляните на этот метод. С его помощью вы можете установить составные чертежи программно, но обратите внимание также на раздел документации Related XML Attributes
— чертежи могут быть определены в XML, что обычно является самым простым способом (конечно, если это применимо в данном случае).
Изображение кнопки, которое вы прикрепили, выглядит как MaterialButton, которое также является стандартным Button
, поэтому значок «плюс» должен быть просто составным рисунком и, как таковой, должен быть легко изменен, как описано выше.
Обновлено: если подумать, с библиотекой дизайна материалов Google для Android все не так просто. Взгляните на MaterialButton
документы, на которые я ссылался выше — там есть метод setIcon(), и он, вероятно, отвечает на ваш вопрос. Вы также можете определить свой значок, который можно рисовать в XML, используя атрибут app:icon
.
Спасибо. Я использую свою собственную тему, но родителем является Theme.MaterialComponents.Light.NoActionBar, однако этого недостаточно, мне нужно использовать то, что вы сказали.