У нас есть приложение для Android, у которого есть вид с рядом кнопок вверху. Каждая из трех кнопок в строке состоит из значка внутри круга с текстом, который описывает его под кружком (что-то вроде этого каркаса, хотя я выбрал значки наугад, так как мне не разрешено делиться действительными ):
![Our icon bar](https://i.stack.imgur.com/YRhzu.png)
Изначально эти кнопки были спроектированы так, чтобы значок, фон круга и граница круга представляли собой растровое изображение (с несколькими плотностями, если требуется) и следующий код (повторяется три раза, по одному для каждой кнопки):
<LinearLayout
android:id="@+id/button1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/button1Image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:clickable="false"
android:contentDescription="@string/button1Text"
android:src="@drawable/button1Image" />
<TextView
android:id="@+id/txtButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="3dp"
android:text="@string/button1Text"
android:textColor="@android:color/white"
android:textSize="14sp" />
</LinearLayout>
Передо мной была поставлена задача модернизировать этот код, потому что все иконки, которые мы используем, на самом деле все изначально векторные иконки (из Библиотеки дизайна материалов), и мы должны иметь возможность просто использовать векторы, и нам не нужно беспокоиться о растеризации и плотность пикселей.
То, что я хотел бы сделать, это удалить круг из самой иконки (чтобы я мог использовать векторные иконки материалов, не изменяя их), и добавить фон кнопки в круг. (Это также позволяет мне изменять цвет круга в зависимости от варианта приложения, не имея много разных наборов изображений.)
Я видел много примеров того, как сделать круглую кнопку с иконкой и текстом внутри нее, но я не могу понять, как сделать одну кнопку, которая выглядит так, как я хочу.
Как я могу сделать хороший многократно используемый компонент, который берет значок вектора и текст и дает мне этот макет для каждой кнопки?
РАЗЪЯСНЕНИЕ : Что я хотел бы сделать здесь, так это убрать круги с значков и сделать фоновый цвет круга кнопки. Я знаю, что могу сделать это с двумя кнопками, одна для текста без фона и одна для изображения с фоном, но я хочу знать, есть ли способ сделать это с помощью одного тега XML, так как у меня есть целое куча их.