圆形按钮,中间有图像

时间:2018-04-25 15:43:41

标签: android button geometry

我想创建一个半径为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 :(得分:0)

使用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"/>

答案 1 :(得分:0)

  

android:layout_width =“56dp”//与56 dp radius ??

相同

您无需为drawable指定高度和宽度,因为它会自动调整使用位置。

  

所以图标在顶部,我不知道如何将它保持在中间位置。

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的涟漪效果,您可以在ImageView上为api级别21或更高级别添加android:foreground="?android:attr/selectableItemBackgroundBorderless"