如何制作顶部可绘制的有光泽的方形按钮?

How to make glassy quare button with drawable on top?

我想制作一个顶部可绘制应用程序图标的玻璃按钮。 我尝试了 Button,将 android:background 设置为 glassy drawable,并使用 drawableTop 附加了一个应用程序图标,但是,应用程序图标没有位于按钮的中心

所以我尝试使用 ImageButton,但 ImageButton 没有 android:background,这意味着我无法同时设置玻璃可绘制对象和应用程序图标。

尝试使用 ImageView,对可绘制对象使用 android:background,对图标使用 android:src,您可以通过 android:gravity[更改视图中图标的重力]

这是满足您要求的视图

<Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableTop="@drawable/android"
        android:text="Android"
        android:padding="20dp"
        android:gravity="center"
        android:layout_gravity="center"
        android:drawablePadding="15dp"/>

我已经尝试使用 75 * 75 dp 的可绘制对象。它与中心对齐。您还可以为按钮设置背景以获得玻璃般的外观。为此,请使用 this 根据您的需要生成可绘制背景并进行相应自定义的工具

这是我为您创建的玻璃按钮背景。在您的 android:background=@drawable/glassybutton

中设置

glassybutton.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <layer-list>
            <item>
                <shape android:shape="rectangle">
                    <solid android:color="#ff0000"/>
                    <corners android:radius="5dp"/>
                </shape>
            </item>
            <item android:bottom="10dp">
                <shape android:shape="rectangle">
                    <gradient android:angle="270"
                        android:startColor="#80FFFFFF"
                        android:endColor="#20FFFFFF"/>
                    <corners android:radius="5dp"/>
                </shape>
            </item>
        </layer-list>
    </item>
</selector>