#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
атрибут.