Круглая кнопка с изображением посередине - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу создать круговую кнопку радиуса 56dp. У него должен быть значок в середине 24dp, и его можно нарисовать вектором, чтобы я мог указать оттенок для рисования

Я создал фон кнопки как

shape xmlns:android="http://schemas.android.com/apk/res/android"
   android:dither="true"
   android:shape="oval"
   android:layout_width="56dp" // is this same as 56 dp radius ??
   android:layout_height="56dp"
>

<solid android:color="?color1"/>

</shape>

И попробовал кнопку как показано ниже

<Button
                                android:id="@+id/xyz"
                                android:layout_width="56dp"
                                android:layout_height="56dp"
                                android:background="@drawable/button_background"

                                android:gravity="center"
                                android:drawableTop="@drawable/my_drawable"
                                android:padding="16dp"
                                android:drawableTint="?color2"

Значит, значок идет вверху, и я не вижу, как я могу держать его посередине. Если я использую Android: SRC, он идет в середине, но я не могу дать оттенок. Каков был бы правильный подход

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

android: layout_width = "56dp" // это то же самое, что радиус 56 dp ??

Вам не нужно указывать высоту и ширину для вашего рисования, потому что оно будет автоматическиотрегулируйте, где он используется.

Значит, значок появляется сверху, и я не вижу, как я могу держать его посередине.

android:drawableTop всегда будет помещать ваше изображение сверху, как написано.

я не могу дать оттенок

Вы можете использовать оттенокв ImageView, как показано ниже.

  • Я не буду предлагать вам использовать ImageButton, потому что он создает дополнительный нежелательный эффект.
  • Я предлагаю использовать ImageView как кнопку, так как это очень управляемый вид.

button_background.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:dither="true"
    android:shape="oval">
    <solid android:color="@color/colorPrimary" />
</shape>

и использование ImageView

 <ImageView
        android:layout_width="56dp"
        android:layout_height="56dp"
        android:background="@drawable/button_background"
        android:padding="16dp"
        android:src="@mipmap/ic_launcher"
        android:tint="@color/colorBlack" />

Редактирование

  • Для эффекта рябив ImageView вы можете добавить android:foreground="?android:attr/selectableItemBackgroundBorderless" в ImageView для API уровня 21 или выше.
0 голосов
/ 25 апреля 2018

Используйте AppCompatImageView для решения вашей проблемы

<android.support.v7.widget.AppCompatImageView
            app:srcCompat="@drawable/border"
            app:tint="@color/colorAccent"
            android:padding="16dp"
            android:layout_width="56dp"
            android:layout_height="56dp"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...